Literals in Objective-C


 int x = 13;
 double y = 10/3;

In above C code example, primitive values 13 and 10/3 are literals. As Objective-C is a superset of C, valid codes in C are also valid in Objective-C. But in iOS application development environment, object types provide from iOS SDK are being use for literal values instead of primitive data types.

NSString *greeting = @"Hello";

In the above code, @”Hello” is an String type Object literal. Without using @ sign and will be something like this


NSString *greeting = [NSString stringWithUTF8String:"Hello"];

So, the use of that @ sign for object literals are more clear and easy to readable. I think everyone use that literals instead of traditional initialising data type objects.

Here are some examples of object literals. They can also use in Numeric Types, Collection and in Dictionary.

Data Types : Traditional 

NSNumber *boolYES = [NSNumber numberWithBool:YES];
NSNumber *boolNO  = [NSNumber numberWithBool:NO];
NSNumber *charX = [NSNumber numberWithChar:'X'];
NSNumber *fortySevenInt = [NSNumber numberWithInt:47];
NSNumber *fortySevenUnsigned = [NSNumber numberWithUnsignedInt:47U];
NSNumber *fortySevenLong = [NSNumber numberWithLong:47L];
NSNumber *goldenRatioFloat = [NSNumber numberWithFloat:1.61803F];
NSNumber *goldenRatioDouble = [NSNumber numberWithDouble:1.61803];
Data Types : Literals
NSNumber *boolYES = @YES;
NSNumber *boolNO  = @NO;
NSNumber *charX = @'X';
NSNumber *fortySevenInt = @47;
NSNumber *fortySevenUnsigned = @47U;
NSNumber *fortySevenLong = @47L;
NSNumber *goldenRatioFloat = @1.61803F;
NSNumber *goldenRatioDouble = @1.61803;
Collection(Array) : Traditional
NSArray *instruments = [NSArray arrayWithObjects: @"Ocarina", @"Flute", @"Harp", nil];
Collection(Array) : Literals 
NSArray *instruments = @[ @"Ocarina", @"Flute", @"Harp" ];
NSMutableArray *instrumentsMutable = [ @[ @"Ocarina", @"Flute", @"Harp" ] mutableCopy];

Dictionary : Traditional

NSArray *keys   = [NSArray arrayWithObjects:@"Character", @"Weapon", @"Hitpoints", nil];
NSArray *objects = [NSArray arrayWithObjects:@"Zelda", @"Sword", [NSNumber numberWithInt:50], nil];
NSDictionary *stats = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

Dictionary : Literals

NSDictionary *stats = @{ @"Character" : @"Zelda",
                         @"Weapon" : @"Sword",
                         @"Hitpoints" : @50 };

One thought on “Literals in Objective-C

Leave a Reply

Your email address will not be published. Required fields are marked *