我有音频类来对缓冲区进行采样,并使用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
。
他们没有被分配。
我需要另一个帖子吗? 怎么了?
答案 0 :(得分:1)
您是否在应用程序的main()函数中使用自动释放池?你是否在主线程以外的线程中使用自动释放的实例(是的,我知道,你没有alloc-init它们,但[NSNumber numberWith ...]返回一个alloc-init-autoreleased对象)?如果您最初没有设置自动释放池,或者您正在使用多个线程,则必须为每个线程创建一个单独的NSAutoreleasePool。
答案 1 :(得分:1)
这意味着,对于运行代码的任何线程,在代码运行之前没有设置autorelease pool。对于基于AppKit或UIKit的应用程序,框架通常在主线程上为您管理一个,但如果您正在使用其他线程,您仍需要自己创建它们。对于不基于AppKit或UIKit的应用程序,您几乎总是需要确保在运行Objective-C代码时有自动释放池。