我刚刚开始学习这个,教程开始时在所有数字文字和字符串文字之前使用 @ 符号,我想“好吧,Objective-C 在文字之前使用 @ 符号”,但接下来你知道他们使用了一些数字without@ 符号和我完全不知所措。
(我说“数字”是因为我不敢说 int,因为 Objective-C / C 有很多类型的数字。)
有什么不同?
Objective C 是 C 的扩展,因此它在 C 使用文字的地方使用常规文字 - 即提供基本类型的值int
, long
, etc.
此外,Objective C 还支持NSNumber
Cocoa 框架的类。该类的对象用于wrap原始值用于需要对象的地方 - 例如,放入集合中。 Cocoa 集合不接受原始类型的值,因此您需要在将数值放入集合之前提供对象包装器。
Objective C 不支持创建类型文字NSNumber
,因此您需要手动包装文字,如下所示:
[NSNumber numberWithInt:4]
这是太多的输入,特别是当您需要定义多个此类值以放入集合中时。这就是为什么 Objective C 添加了一种替代语法来创建NSNumber
是 - 与@
符号。所以当你写的时候@4
,这与写作相同[NSNumber numberWithInt:4]
,但是打字少了很多。例如,在旧语法中看起来像这样的初始化
NSArray *oneTwoThree = [NSArray arrayWithObjects: [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil];
现在看起来像
NSArray *oneTwoThree = @[@1, @2, @3];
这更具可读性。
注意:第二个代码片段也使用新语法进行数组初始化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)