NSAutoreleasePool утечка в инструментах - PullRequest
0 голосов
/ 21 ноября 2011

Я прошу прощения, если об этом уже спрашивали, но я не нашел хорошего ответа.

Когда я запускаю инструменты, я вижу утечку в этой строке в коде, а не в основном:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

Я искал и где-то читал, что это может быть ошибка. Может ли кто-нибудь помочь мне и рассказать об этом?

Я заметил, что у меня одно и то же имя, "пул", в основном тоже.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

У меня тоже была эта проблема, моя первая проблема в первый день, когда я научился кодировать!

Все, что я сделал, это сразу удалил всю строку, начинающуюся с:

NSAutoreleasepool * pool = [[NSAutoreleasepool alloc] init];

заменить его на:

@ autoreleasepool {

Затем я удалил внизу моей программы:

[выпуск пула];

Затем закрыли волнистыми скобками.

Я не знаю, почему это работает, я помню свой первый день, но он прекрасно запускает мою программу из книги примеров.

0 голосов
/ 21 ноября 2011

Имя не имеет значения; в кодовой базе могут быть сотни переменных с именем pool. Что имеет значение, так это сфера охвата.

Как правило, вы увидите это:

- someMethod
{
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     ... do stuff ...
     id something = [anObject retain];
     [pool drain];
     return [something autorelease];
 }

т.е. ваш бассейн осушается?

(drain существует на iOS; см. документацию . Однако во всех случаях лучше использовать @autoreleasepool{ ... }; он работает в ARC и MRR.)

...