NSArray *array = [NSArray new];
id obj1 = [array firstObject]; // this is giving nil value
id obj2 = [array objectAtIndex:0]; // this line crashes
Using firstObject is a system defined API which returns nil if there is none. But if you try to access objectAtIndex it will give NSRange exception and app will crash.