我有这个功能:
-(void) debugPrint
{
printf("name: %s", [_name UTF8String]);
}
这会导致运行时错误:
[会议开始于2009-03-21 15:02:26 -0700。] 2009-03-21 15:02:26.319 TGui [20063:10b] *** _NSAutoreleaseNoPool():类NSCFData的对象0x10a290自动释放,没有池到位 - 只是泄漏 堆栈:(0x9234c73f 0x92258e32 0x9226d505 0x9226d0e1 0x2406 0x22ce 0x20be) 名称:名称
奇怪的是,当我做[_name cString]时,它运行正常。
答案 0 :(得分:2)
您调用该方法的线程没有NSAutoreleasePool
,因此自动释放的对象没有池。您必须为每个线程设置NSAutoreleasePool
。 NSAutoreleasePool
文档的介绍更详细地解释了这个想法。
答案 1 :(得分:0)
哎呀 - 在调用“返回NSApplicationMain(argc,(const char **)argv);”之前,我把所有调试都放在main()中。这导致了问题。