NSNumber文字

Tyl*_*ton 4 objective-c literals nsnumber foundation

我是Objective-C的新手.我知道C和C++,但Objective-C有相当的学习曲线.无论如何,是否有更短的方式(可能通过某种NSNumber文字,如果存在)写下面的内容:

[Tyler setArms:[[[NSNumber alloc] autorelease] initWithInt:1]];
Run Code Online (Sandbox Code Playgroud)

rjs*_*ing 16

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]
Run Code Online (Sandbox Code Playgroud)

所以,回答你的具体问题:

[Tyler setArms:[[[NSNumber alloc] autorelease] initWithInt:1]];
Run Code Online (Sandbox Code Playgroud)

现在可以写成:

[Tyler setArms:@1];
Run Code Online (Sandbox Code Playgroud)

数组和字典也有文字,但它们超出了这个问题的范围.

要利用Xcode中的文字,您至少需要4.4版本(在撰写本文时,这只是一个预览版).

注:LLVM是一个开源项目,所以没有的,这是受到苹果公司的保密协议.


Ada*_*eld 6

是的,只需使用众多辅助函数之一,例如numberWithInt::

[Tyler setArms:[NSNumber numberWithInt:1]];
Run Code Online (Sandbox Code Playgroud)

表达式[NSNumber numberWithInt:1]相当于[[[NSNumber alloc] initWithInt:1] autorelease],相当于[[[NSNumber alloc] autorelease] initWithInt:1].后一种表达非常罕见.