NSArray *names; names = [NSArray arrayWithObjects: @"Nicola", @"Margherita", @"Luciano", @"Silvia", nil];The last element in the list must be nil, to mark the end of the list. You can put in the same array objects of different classes:
NSArray *objects; NSButton *buttonOne; NSButton *buttonTwo; NSTextField *textField; buttonOne = AUTORELEASE ([NSButton new]); buttonTwo = AUTORELEASE ([NSButton new]); textField = AUTORELEASE ([NSTextField new]); objects = [NSArray arrayWithObjects: buttonOne, buttonTwo, textField, nil];but you can't put nil inside an array. All objects in an array must be valid, not-nil objects.
When an object is put in an array, the NSArray sends to it a -retain message, to prevent it from being deallocated while it is still in the array. When an object is removed from the array (because the array is a NSMutableArray so objects can be removed from it, or because the array itself is deallocated), it is sent a -release message.