Реальная проблема, с которой вы столкнулись, заключается в следующем:
//start loop
MyItem *x = [[MyItem alloc] init];
[itemArray addObject:x];
//end loop
Вы выделяете объект (значит, у вас есть право собственности), затем помещаете его в массив и никогда не освобождаете его.Вы должны сделать это:
//start loop
MyItem *x = [[MyItem alloc] init];
[itemArray addObject:x];
[x release];
//end loop
или это:
//start loop
MyItem *x = [[[MyItem alloc] init] autorelease];
[itemArray addObject:x];
//end loop
Как только вы добавите его в массив, массив станет владельцем, сохранив объект, поэтому у вас нетсохранить это сохранил себя.И когда вы вызываете -removeAllObjects
, массив освободит их соответствующим образом.По сути, как только вы передаете его в массив, вам не нужно об этом беспокоиться.
Вы должны начать привыкать к использованию ARC , когда вам вообще не придется беспокоиться об освобождении объекта, потому что компилятор сделает это за вас.