Без каких-либо изменений в моем коде, кроме сборки с Qt 4.5, я получаю следующее предупреждающее сообщение при запуске своего приложения:
*** _NSAutoreleaseNoPool(): Object 0x50a1b0 of class NSCFNumber autoreleased with
no pool in place - just leaking
Я не использую Objective-C в своем коде, но Qt 4.5 использует новую серверную часть на основе Cocoa вместо Carbon.
Я не уверен, как решить и исправить это сообщение об ошибке. Кто-нибудь знает?
Ответ 1 · рейтинг 6 · Boaz Stuller
Как правило, когда вы видите эту проблему в своем коде, вы заключаете в скобки блок кода, вызывающий нарушение, с помощью NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; до и [pool release]; после. Вы можете установить точку останова для функции _NSAutoreleaseNoPool и просто просмотреть сканирование стека, чтобы увидеть, что такое код нарушения. Имейте в виду, что -autorelease используется везде в Cocoa, поэтому это может быть не конкретный вызов autorelease в коде Qt, который запускает его.
Однако, поскольку это делает код Qt, и, в последний раз, когда я проверял, Qt/Cocoa все еще находился в стадии разработки, вам, вероятно, следует просто отправить им отчет об ошибке с сообщением об ошибке и обходом стека и дождаться их исправить.