I have this line in Objective-C.
NSMutableArray *mutableArray;
[mutableArray addObject:@{ @"Something" : aObject, @"Otherthing" : anotherObject }];
What does the @{ ... }
part do exactly? It is an object, but it seems to create some kind of key, value pair on the fly.
The @{ ... } syntax is a shorthand way of creating a NSDictionary introduced as part of Modern Objective-C. The syntax
@{@"key1": object1, @"key2": object2}
is just a shorthand for more verbose methods like[NSDictionary dictionaryWithObjectsAndKeys:]
among a few others.It is creating NSDictionary object as you said. Syntax is simple
In your example, keys are objects of NSString class. It is important to remember that dictionary copies keys and retains values.
These are called Literals. Apple LLVM Compiler 4.0 and above can use this.
In your question, the expression creates a dictionary
Similarly arrays which were created using
NSArray arrayWithArray
and other similar methods, can now be done easilyand you will not even need the
nil
sentinel.More details here: http://clang.llvm.org/docs/ObjectiveCLiterals.html