目标c -我应该在库中使用自动释放池吗?



我有一个头文件(C Like)

我必须制作一个Obj-c库(或者只是几个。m -s)来实现它。

调用库的都是C程序。

但是我不想手动处理内存分配,我想使用ARC。

我可以在我的函数中使用autoreleasepool{}以使ARC工作和功能…

或者我必须在几年后返回/卸载我的懒惰并手动执行此操作?

我可以在我的函数中使用autoreleasepool{}以使ARC工作和功能…

是的。如果从C调用,您必须在每个C入口点这样做,否则几乎肯定会泄漏内存。如果您没有这样做,您应该在控制台上看到类似"自动释放对象而没有自动释放池"的消息。只是泄漏。"

我可以在我的函数中使用autoreleasepool{}以使ARC工作和功能…

@autoreleasepool不仅适用于ARC。您可以将@autoreleasepool-fobjc-arc-fno-objc-arc一起使用。

http://clang.llvm.org/docs/AutomaticReferenceCounting.html autoreleasepool

@autoreleasepool可以在非arc翻译单元中使用,具有相同的语义。

,

调用库的都是C程序。

你的意思是应用程序是用C语言编写的,库程序是用Objective-C语言编写的?在这种情况下,您应该在代码中使用@autoreleasepool。通常,对于OS X Cocoa应用程序,有一个带有自动释放池的运行循环,所以在某些情况下(例如,避免大量内存使用)之前,不需要在代码中使用@autoreleasepool

无论如何,你可以在你的库代码中使用ARC,但它应该使用-fobjc-arc选项编译。

相关内容

  • 没有找到相关文章

最新更新