我应该在库中使用 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."

的消息