【问题标题】:Weird leak when using [NSStringObject UTF8String]使用 [NSStringObject UTF8String] 时出现奇怪的泄漏
【发布时间】:2009-03-21 22:06:06
【问题描述】:

我有这个功能:

-(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] 时,它工作正常。

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    您调用该方法的线程没有NSAutoreleasePool,因此自动释放的对象没有池。您必须为每个线程设置一个NSAutoreleasePoolNSAutoreleasePool 文档的介绍更详细地解释了这个想法。

    【讨论】:

      【解决方案2】:

      哎呀——在调用“return NSApplicationMain(argc, (const char **) argv);”之前,我将所有内容都放在 main() 中的 debugPrint 中。这导致了问题。

      【讨论】:

        猜你喜欢
        • 2011-08-13
        • 1970-01-01
        • 2011-09-08
        • 2012-07-06
        • 2011-09-28
        • 2012-06-02
        • 2011-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多