2009-09-27 36 views
4

根据another Stack Overflow postdrain消息是苹果专用电话:GNUstep的NSAutoreleasePool不兼容性

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

它是安全的替代drainrelease?我正尝试移植一个Objective-C应用程序以在Linux上运行(Ubuntu目前)。即使在我开始之前,我应该放弃吗? (我已经有试图让NSURLConnection工作问题)

回答

4

drain苹果的文档:

[...]此方法的行为一样释放。 [...]

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

但是:

特别注意事项:
在一个垃圾收集的环境中,release 是一个空操作,所以除非你不想 也给集电极的提示是 重要的是在任何代码 中使用drain,其可以被编译用于垃圾收集环境 。

+0

非常感谢您的支持。我没有想到要阅读Apple文档来理解非苹果库(: – Jacob 2009-09-27 13:47:15

+0

-drain不会 - 将永远不会 - 因为它支持垃圾回收器而不推荐使用)。这对于代码中的性能至关重要。运行GC和非GC,如某些插件和系统框架。 – bbum 2009-09-27 22:08:01