【问题标题】:GNUStep NSAutoreleasePool incompatibilityGNUStep NSAutoreleasePool 不兼容
【发布时间】:2010-12-01 18:53:05
【问题描述】:

根据another Stack Overflow postdrain 消息是Apple 专用呼叫:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Hello");
[pool drain];
return 0;

drain 替换为release 是否安全?我正在尝试移植一个 Objective-C 应用程序以在 Linux(目前是 Ubuntu)上运行。我应该在开始之前就放弃吗? (我已经在尝试让 NSURLConnection 工作时遇到问题)

【问题讨论】:

    标签: objective-c gnustep nsautoreleasepool


    【解决方案1】:

    来自 Apple 的 drain 文档:

    [...] 此方法的行为与发布相同。 [...]

    因此,耗尽自动释放池意味着不可避免地释放它。在我看来,Apple 应该弃用 drain,因为它只会造成混乱。

    但是:

    特别注意事项:
    在垃圾收集的环境中,release 是无操作的,所以除非你不想要 给收藏家一个提示 在任何代码中使用drain 很重要 可以编译为 垃圾收集环境。

    【讨论】:

    • 感谢您解决这个问题。我没有想到阅读 Apple 文档以了解非 Apple 库(:
    • -drain 不会——永远不会——完全被弃用,因为它支持垃圾收集器。这对于必须同时运行 GC 和非 GC 的代码(例如某些插件和系统框架)的性能来说是一个关键的好处。
    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2014-04-12
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多