В этом цикле происходит утечка памяти:
int64_t i,verylongnumber;
//misc. code
for(i=0;i<verylongnumber;i++){
NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:
[NSNumber numberWithLongLong:65535],
[NSNumber numberWithLongLong:65535],
[NSNumber numberWithLongLong:65535],
[NSNumber numberWithLongLong:65535],
nil];
[myArray removeAllObjects];
[myArray release];
}
Я пробовал все, чтобы не допустить утечки памяти, но не могу. Я думаю, что это как-то связано с номерами NSN. Я предполагаю, что они созданы автоматически выпущенными, но означает ли это, что я должен освободить их индивидуально (то есть использовать alloc)? Как бы я вообще это сделал? Создать отдельную переменную для каждого NSNumber и вставить его в массив? Это похоже на большую работу. Я попытался [myArray removeAllObjects], но это не имело никакого значения. это в моей собственной теме с собственным пулом авто-релиза. Я не уверен, если это имеет значение.
Это исправлено:
Я добавил дополнительный пул авто-релиза внутри цикла:
int64_t i,verylongnumber;
//misc. code
for(i=0;i<verylongnumber;i++){
NSAutoreleasePool *pool2 = [[NSAutoreleasePool alloc] init];
NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:
[NSNumber numberWithLongLong:65535],
[NSNumber numberWithLongLong:65535],
[NSNumber numberWithLongLong:65535],
[NSNumber numberWithLongLong:65535],
nil];
[myArray release];
[pool2 drain];
}