NSAutoreleasePool проблема - PullRequest
       7

NSAutoreleasePool проблема

0 голосов
/ 13 октября 2009

Я использую эту строку кода в iphone 2.0, она отлично работает

pool=[[NSAutoreleasePool alloc]init];

[pool release];

Когда я запускаю эту строку кода в iphone 3.0, на экране журнала появляется сообщение об утечке. Это сообщение

2009-10-13 03:26:31.841 Spectrum[3946:4c2b] *** _NSAutoreleaseNoPool(): Object 0xd819d0 of class NSCFString autoreleased with no pool in place - just leaking
Stack: (0x305a2e6f 0x30504682 0x52c14d 0x536f67 0x3058deff 0xb049 0xa554 0x3050a79d 0x3050a338 0x97181155 0x97181012)

Кто-нибудь может мне помочь?

Заранее спасибо ....

Ответы [ 3 ]

1 голос
/ 13 октября 2009

Это сообщение появляется, когда объекту отправляется сообщение autorelease вне области автоматического выпуска. Поместите точку останова на _NSAutoreleaseNoPool и проверьте стек, чтобы увидеть, куда нужно добавить пул.

1 голос
/ 13 октября 2009

Ваш код распределения и выпуска пула выглядит нормально. Тем не менее, сообщение об ошибке указывает на то, что что-то было выделено с помощью автоматического выпуска за пределами пула автоматического выпуска. Это часто происходит, когда вы используете вторичный поток, при использовании некоторых специальных методов загрузки и при инициализации глобальных переменных.

Как только вы изолируете бит утечки кода , вы можете попробовать обернуть его другим набором NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; и [pool release];.

0 голосов
/ 13 октября 2009

Найдите любое место в вашем коде, где вы создаете автоматически выпущенные объекты, находясь в другом потоке, чем ваш основной цикл выполнения.

...