【发布时间】:2012-07-24 12:50:18
【问题描述】:
我读过这个article。
我发现了很棒的技能。是关于@operator。
NSArray、NSDictionary 和 NSNumber 对象支持文字语法,使用与 NSString 文字相同的“@”运算符。
但是,我找不到任何示例代码。
能否请您进一步解释一下使用@operator 的NSNumber、NSArray、NSDictionary?
谢谢。
【问题讨论】:
我读过这个article。
我发现了很棒的技能。是关于@operator。
NSArray、NSDictionary 和 NSNumber 对象支持文字语法,使用与 NSString 文字相同的“@”运算符。
但是,我找不到任何示例代码。
能否请您进一步解释一下使用@operator 的NSNumber、NSArray、NSDictionary?
谢谢。
【问题讨论】:
您可以在 LLVM 的有关 Objective-C Literals 的手册页中找到有关新语法的信息。
【讨论】:
Mike ash 就这个话题写了一篇很好的article:
它涵盖了基础知识,以及一些非常酷的实现细节。 这至少应该让您开始,如果您有任何其他问题,请在下面发表评论!
【讨论】:
到目前为止我见过的最好的文档在llvm man page。
// integral literals.
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]
// floating point literals.
NSNumber *piFloat = @3.141592654F; // equivalent to [NSNumber numberWithFloat:3.141592654F]
NSNumber *piDouble = @3.1415926535; // equivalent to [NSNumber numberWithDouble:3.1415926535]
// BOOL literals.
NSNumber *yesNumber = @YES; // equivalent to [NSNumber numberWithBool:YES]
NSNumber *noNumber = @NO; // equivalent to [NSNumber numberWithBool:NO]
// This creates an NSArray with 3 elements. The comma-separated sub-expressions of an array
// literal can be any Objective-C object pointer typed expression.
NSArray *array = @[ @"Hello", NSApp, [NSNumber numberWithInt:42] ];
// Immutable dictionary expression:
NSDictionary *dictionary = @{
@"name" : NSUserName(),
@"date" : [NSDate date],
@"processInfo" : [NSProcessInfo processInfo]
};
【讨论】: