接受的答案(虽然当时是正确的)现在已经过时了。从 Xcode 4.5 开始,您现在可以使用以下方法设置和获取 NSArray 元素:
id object = array[5]; // equivalent to [array objectAtIndex:5];
mutableArray[5] = object; // equivalent to [mutableArray replaceObjectAtIndex:5 withObject:object];
您还可以使用以下方法对 NSDictionaries 执行相同操作:
id object = dict[@"key"]; // equivalent to [dict objectForKey:@"key"];
mutableDict[@"key"] = object; // equivalent to [mutableDict setObject:object forKey:@"key"];
更酷的是,您现在可以使用类似 JSON 的语法创建数组和字典对象:
NSArray *array = @[@"value1", @"value2"]; // equivalent to [NSArray arrayWithObjects:@"value1", @"value2", nil];
NSDictionary *dict = @{@"key1":@"value1", @"key2":@"value2"}; // equivalent to [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
同样,像 NSNumber 这样的装箱值现在可以用简写语法编写:
NSNumber *intNumber = @5; // equivalent to [NSNumber numberWithInteger:5];
NSNumber *boolNumber = @YES; // equivalent to [NSNumber numberWithBool:YES];
NSNumber *someNumber = @(variable); // equivalent to [NSNumber numberWithWhatever:variable];
EDIT:
比我这里更详细的答案:Xcode 4.4 发行说明中提到的“Objective-C Literals”的详细信息是什么? https://stackoverflow.com/questions/9347722/what-are-the-details-of-objective-c-literals-mentioned-in-the-xcode-4-4-releas
EDIT 2:
需要明确的是,尽管此功能直到 Xcode 4.5 才添加,但它适用于 iOS 4.3 及更高版本,因此如果您需要支持较旧的 iOS 版本,则不必避免使用此功能。
EDIT 3:
出于迂腐的精确性,它适用于 Apple LLVM 编译器版本 4.1 及更高版本。又称 Xcode 4.5 附带的版本。