Используйте [NSNull null]
, если вам нужно сохранить пустой объект-заполнитель.
Например:
NSArray * myArray = [NSArray arrayWithObjects:obj1, [NSNull null], obj3, nil];
myArray
будет содержать 3 объекта. При извлечении объекта вы можете выполнить простой тест на равенство указателей, чтобы определить, является ли он единичным пустым:
id object = [myArray objectAtIndex:anIndex];
if (object == [NSNull null]) {
//it's the null object
} else {
//it's a normal object
}
РЕДАКТИРОВАТЬ (отвечая на комментарий)
@ Майк Я думаю, ты путаешься с тем, что на самом деле происходит.
Если у вас есть:
id obj = ...;
Тогда obj
содержит адрес . Он не содержит объект. Таким образом, если вы сделаете NSLog(@"%p", obj)
, он напечатает что-то вроде 0x1234567890
. Когда вы помещаете obj
в массив, он не копирует объект, а копирует адрес объекта. Таким образом, массив на самом деле содержит 0x1234567890
. Поэтому, когда вы позже выполните: obj = nil;
, вы воздействуете только на указатель вне массива. Массив все равно будет содержать 0x1234567890
.