автоматически выпущен без предупреждения пула? - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть аудио класс, который сэмплирует буфер, и с NSNotification он вызывает другой класс и отправляет данные (int).

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

class __NSCFNumber autoreleased with no pool in place - just leaking - break on objc_autoreleaseNoPool()

class __NSCFString autoreleased with no pool in place - just leaking - break on objc_autoreleaseNoPool() to debug

что это значит? да, у меня есть NSNumber в этом классе и NSString. они не выделены.

мне нужен другой поток? что не так?

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Это означает, что для любого потока, в котором выполняется код, пул автоматического выпуска не был настроен до запуска этого кода. Для приложений, основанных на AppKit или UIKit, среда обычно управляет одной из них в главном потоке, но вам все равно придется создавать их самостоятельно, если вы используете другие потоки. Для приложений, которые не основаны на AppKit или UIKit, вам почти всегда нужно быть уверенным, что при запуске кода Objective-C существует пул авто-релизов.

1 голос
/ 28 февраля 2012

Используете ли вы пул автоматического выпуска в своей функции main () в приложении?Используете ли вы автоматически высвобождаемые экземпляры (да, я знаю, вы не выделяли их init-но, но [NSNumber numberWith ...] возвращает объект alloc-init-autoreleased) в потоке, отличном от основного потока?Если вы изначально не настроили пул автоматического выпуска или используете несколько потоков, вы должны создать отдельный NSAutoreleasePool для каждого потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...