Когда вы добавляете элемент, как это:
[map addObject:[[FLItem alloc] init]];
или как это:
FLItem *item = [[FLItem alloc] init];
[map addObject:item];
его счетчик хранения равен 2, потому что вы создали его с помощью init (это 1), а NSMutableArray
также сохраняет его (это еще 1).
Таким образом, когда вы освобождаете массив, он освобождает элемент, и его счетчик сохранения становится равным 1. Так что в первом случае он не освобождается, а во втором случае, когда вы вызываете [item release];
, он освобождается.
Что вам, вероятно, следует сделать в первом случае:
[map addObject:[[[FLItem alloc] init] autorelease]];