【问题标题】:POSIX callbacks and NSAutoreleasePool with ARC带有 ARC 的 POSIX 回调和 NSAutoreleasePool
【发布时间】:2012-08-20 23:04:16
【问题描述】:

根据这个 Apple page,我读到在 POSIX 线程上与 Cocoa 交互时,我应该创建一个 NSAutoreleasePool

如果您在 Application Kit 的主程序之外进行 Cocoa 调用 线程——例如,如果您创建一个仅 Foundation 的应用程序,或者如果 你分离一个线程——你需要创建你自己的自动释放池。

很遗憾,ARC 不允许使用 NSAutoreleasePool

那么我应该怎么做才能保证总是有一个池可用于任何自动释放的 ARC 代码?

谢谢!

【问题讨论】:

    标签: objective-c automatic-ref-counting posix nsautoreleasepool


    【解决方案1】:

    使用@autoreleasepool

    @autoreleasepool
    {
        // make Cocoa calls here
    }
    

    这允许编译器正确推断跨越池边界的对象的生命周期,这是 ARC 的要求。 (这就是为什么你不能使用NSAutoreleasePool。)另外,它也更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多