包装CGFloat和用NSNumber初始化的区别?

本文探讨了@(CGFloat)与[NSNumber numberWith:CGFloat]两种Objective-C数值包装方式的区别, 对比了这两种方式在内存占用、初始化效率及使用场景上的不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@(CGFloat)和[NSNumber numberWith:CGFloat]的区别?

 

转载于:https://www.cnblogs.com/liuw-flexi/p/7651917.html

在Swift中,你可以使用Core Graphics框架来绘制正弦余弦曲线图。以下是一个简单的步骤: 1. 首先,确保你已经在视图控制器中设置了图形上下文。在`viewDidLoad()`方法中添加以下代码: ```swift override func viewDidLoad() { super.viewDidLoad() let graphView = UIView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height * 0.8)) graphView.backgroundColor = .white view.addSubview(graphView) setupGraph(graphView) } ``` 2. 创建一个函数`setupGraph(_:)`来设置绘图区域颜色等属性: ```swift func setupGraph(_ graphView: UIView) { let context = UIGraphicsGetCurrentContext()! context.setLineWidth(2.0) context.setStrokeColor(UIColor.blue.cgColor) context.setFillRule(.evenodd) } ``` 3. 使用`drawSinusoidalWaveform()``drawCosineWaveform()`方法来分别绘制正弦余弦波形: ```swift func drawSinusoidalWaveform(to view: UIView, from x: CGFloat, to xEnd: CGFloat, amplitude: CGFloat, frequency: CGFloat) { let maxY = view.bounds.height / 2 - amplitude let minY = -maxY for xValue in x...xEnd { let yValue = amplitude * sin(2 * Double.pi * frequency * xValue / view.bounds.width) let yPosition = view.bounds.height / 2 + (yValue - minY) * (view.bounds.height / (maxY - minY)) // 绘制点 let point = CGPoint(x: xValue, y: yPosition) context.move(to: point) context.addLine(to: point) } } func drawCosineWaveform(to view: UIView, from x: CGFloat, to xEnd: CGFloat, amplitude: CGFloat, frequency: CGFloat) { // 类似于sinusoidalWaveform,只是替换sin为cos ... } ``` 4. 调用这两个函数并在合适的位置频率上绘制它们: ```swift let waveWidth = view.bounds.width / 5 let xAxisStart = 0 let yAxisAmplitude = view.bounds.height / 2 let waveFrequency = 0.1 drawSinusoidalWaveform(to: graphView, from: xAxisStart, to: xAxisStart + waveWidth, amplitude: yAxisAmplitude, frequency: waveFrequency) drawCosineWaveform(to: graphView, from: xAxisStart + waveWidth, to: xAxisStart + waveWidth * 2, amplitude: yAxisAmplitude, frequency: waveFrequency) // 可以增加更多的波形,改变位置频率 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值