我有一个头文件(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
选项编译。