0

GTMLogger在我的应用程序中使用格式化日志记录的功能。此应用程序创建实时 posix 线程(音频数据包处理)。有时我们需要从这些非 Cocoa 线程中执行日志记录。GTMLogger创建自动释放的对象,我想在函数中的调用上放置一个@autoreleasepoolGTMLogger,从非 Cocoa 线程记录,但我担心它会影响性能。

我的问题是 - 我可以以某种方式创建自动释放池并将其与当前的 posix 线程相关联,因此每个线程只创建一次池,而不是每次调用日志函数时创建池?

提前致谢

4

2 回答 2

1

在 ARC 下,使用@autoreleasepool速度非常快。如果您担心那里的性能,我会更担心首先避免不必要的日志记录调用,而不是自动释放池。

如果线程是长期存在的,则通常不能创建与“线程”关联的池。您需要定期排空池,如果您只是将整个线程主函数括在一个@autoreleasepool{}或任何类似的东西中,就不会发生这种情况。

于 2013-02-04T19:31:08.657 回答
0

好吧,如果您无法控制线程的主函数,那么我想您能做的最好的事情就是将自动释放池放置在该库“调用”到您控制的代码中的位置。

于 2013-02-04T20:09:29.737 回答