fuz*_*oat 18 cocoa objective-c
这是使用浮动对象初始化NSArray的有效方法吗?
NSArray *fatArray = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:6.9],
[NSNumber numberWithFloat:4.7],
[NSNumber numberWithFloat:6.6],
[NSNumber numberWithFloat:6.9],nil];
Run Code Online (Sandbox Code Playgroud)
它工作正常,只是想确保我走在正确的轨道上.
加里
zou*_*oul 32
正如mouviciel已经写过的,这是做到这一点的方法.当我写这样的东西时,我通常使用一个简单的宏来缩短代码:
#define FBOX(x) [NSNumber numberWithFloat:x]
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样重写代码:
NSArray *fatArray = [NSArray arrayWithObjects:
FBOX(6.9), FBOX(4.7), FBOX(6.6), FBOX(6.9), nil];
Run Code Online (Sandbox Code Playgroud)
宏是邪恶的,但在这种情况下,宏是如此简单,我会使用它.此外,代码对读取的伤害要小一些,特别是如果宏定义不远.
如果您编写了大量这样的代码,您可以创建一个带有可变数量float参数的自定义初始化程序的类别,但是在结束参数列表时会出现问题.您可以先传递浮点数总数:
- (id) initWithFloats: (int) numFloats data: (float) float1, ...;
Run Code Online (Sandbox Code Playgroud)
但手工计算参数很容易出错.或者你可以使用一些标记值,例如零,这将标记参数列表的结尾,但这会打开一个称为浮点比较的全新蠕虫.
请注意,现在您只需编写以下内容:
NSArray *list = @[@6.9, @4.7, @6.6, @6.9];
Run Code Online (Sandbox Code Playgroud)
这不是一个语法梦想成真,但它得到了编译器的正式支持,它比以前的解决方案要好得多.请参阅文档以获得更多优点.
| 归档时间: |
|
| 查看次数: |
26382 次 |
| 最近记录: |