objective c - Точка останова, указывающая «objc_autoreleaseNoPool»




objective-c ios (2)

Итак, я отлаживаю приложение перед его выпуском, поэтому я включил универсальную точку останова для «Все исключения». С тех пор каждый раз, когда я запускаю приложение, консоль печатает:

Catchpoint 2 (throw) Ожидание точки останова 1 - "objc_exception_throw" разрешено

objc [11765]: Объект 0x8f18ff0 класса __NSCFLocale автоматически освобожден без пула на месте - просто утечка - перерыв objc_autoreleaseNoPool () для отладки

objc [11765]: Объект 0x8f190a0 класса __NSCFNumber автоматически освобожден без пула на месте - только утечка - разрыв на objc_autoreleaseNoPool () для отладки

objc [11765]: Объект 0x8f1fef0 класса __NSCFLocale автоматически освобожден без пула на месте - просто утечка - прерывание objc_autoreleaseNoPool () для отладки

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


Многие из методов в API какао возвращают автоматически освобожденные объекты. В частности, те методы, которые возвращают объект, который не начинается с init , такие как [NSNumber numberWithLong:] . Если у вас нет пула автоматического выпуска, эти объекты будут пропущены. Вы можете найти больше информации об использовании NSAutoreleasePool в documentation .


Это означает, что вам нужно создать пул авто-релиза в потоке, в котором это происходит. В противном случае ваши выделенные объекты не будут уничтожены (как указано в сообщении). Итак, разбейте / сделайте паузу в символе, затем поднимитесь вверх по стеку к записи вашего потока (или программы) и добавьте пул авто-выпуска. Это все.







breakpoints