我对Objective-C非常陌生。我知道C和C++,但Objective-C有相当长的学习曲线。无论如何,有没有一种更短的方法(如果存在的话,可能是通过某种NSNumber文字)来编写下面的代码:
[Tyler setArms:[[[NSNumber alloc] autorelease] initWithInt:1]];
发布于 2011-03-21 04:22:10
可以,只需使用众多帮助函数中的一个即可,如numberWithInt:
[Tyler setArms:[NSNumber numberWithInt:1]];
表达式[NSNumber numberWithInt:1]
等同于[[[NSNumber alloc] initWithInt:1] autorelease]
,它等同于[[[NSNumber alloc] autorelease] initWithInt:1]
。后一种表达方式非常少见。
发布于 2012-06-20 13:12:17
从Clang v3.1开始,你现在可以使用Objective-C文本了。
NSNumber *fortyTwo = @42; // equivalent to [NSNumber numberWithInt:42]
NSNumber *fortyTwoUnsigned = @42U; // equivalent to [NSNumber numberWithUnsignedInt:42U]
NSNumber *fortyTwoLong = @42L; // equivalent to [NSNumber numberWithLong:42L]
NSNumber *fortyTwoLongLong = @42LL; // equivalent to [NSNumber numberWithLongLong:42LL]
所以,在回答你的具体问题时:
[Tyler setArms:[[[NSNumber alloc] autorelease] initWithInt:1]];
现在可以写成:
[Tyler setArms:@1];
也有用于数组和字典的文字,但它们超出了本问题的范围。
要利用Xcode中的文本,至少需要4.4版(在撰写本文时,这只是一个预览)。
注: LLVM是一个开源项目,因此 to 不受苹果保密协议的约束。
发布于 2011-03-21 04:23:22
你不需要分配和初始化,NSNumber
提供了一个方便的方法来实现:
[Tyler setArms:[NSNumber numberWithInt:1]];
https://stackoverflow.com/questions/5373746
复制相似问题