我应该在库中使用 Autoreleasepool
Should I use Autoreleasepool in library
我有一个头文件(C Like)
我必须制作一个 Obj-c 库(或几个 .m -s)来实现它。
调用库的人就是C程序。
但是我不想手动处理内存分配,我想使用 ARC。
我可以在我的函数中使用 autoreleasepool{}
以使 ARC 正常工作吗...
或者我必须返回 years/uninstall 我的懒惰并手动执行此操作?
May I use autoreleasepool{} inside my functions in order to have ARC working and functioning...
@autoreleasepool
不仅适用于 ARC。您可以将 @autoreleasepool
与 -fobjc-arc
和 -fno-objc-arc
一起使用。
http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool
@autoreleasepool may be used in non-ARC translation units, with equivalent semantics.
此外,
Whoever will call the library will be a C program.
已编辑
你的意思是应用程序是用C语言写的,库程序是用Objective-C语言写的?在这种情况下,您应该在代码中使用 @autoreleasepool
。通常,对于 OS X Cocoa 应用程序,有一个具有自动释放池的运行循环,因此在某些情况下(例如,避免大量内存使用情况)。
已编辑
无论如何,您可以在您的库代码中使用 ARC,但它应该使用 -fobjc-arc
选项进行编译。
May I use autoreleasepool{} inside my functions in order to have ARC working and functioning...
是的。如果您是从 C 调用的,则您 必须 在每个 C 入口点都这样做,否则您几乎肯定会泄漏内存。如果您没有这样做,您应该会在控制台上看到类似 "Autoreleased object while no autorelease pool. Just leaking."
的消息
我有一个头文件(C Like)
我必须制作一个 Obj-c 库(或几个 .m -s)来实现它。
调用库的人就是C程序。
但是我不想手动处理内存分配,我想使用 ARC。
我可以在我的函数中使用 autoreleasepool{}
以使 ARC 正常工作吗...
或者我必须返回 years/uninstall 我的懒惰并手动执行此操作?
May I use autoreleasepool{} inside my functions in order to have ARC working and functioning...
@autoreleasepool
不仅适用于 ARC。您可以将 @autoreleasepool
与 -fobjc-arc
和 -fno-objc-arc
一起使用。
http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool
@autoreleasepool may be used in non-ARC translation units, with equivalent semantics.
此外,
Whoever will call the library will be a C program.
已编辑
你的意思是应用程序是用C语言写的,库程序是用Objective-C语言写的?在这种情况下,您应该在代码中使用 @autoreleasepool
。通常,对于 OS X Cocoa 应用程序,有一个具有自动释放池的运行循环,因此在某些情况下(例如,避免大量内存使用情况)。
已编辑
无论如何,您可以在您的库代码中使用 ARC,但它应该使用 -fobjc-arc
选项进行编译。
May I use autoreleasepool{} inside my functions in order to have ARC working and functioning...
是的。如果您是从 C 调用的,则您 必须 在每个 C 入口点都这样做,否则您几乎肯定会泄漏内存。如果您没有这样做,您应该会在控制台上看到类似 "Autoreleased object while no autorelease pool. Just leaking."
的消息