我将我的项目转换为使用ARC,我在iOS 5中运行良好。但是当在4.3模拟器上运行时,我收到了很多这样的消息:
2011-10-16 12:23:29.915 iRoster [1604:1300b] * __NSAutoreleaseNoPool():EKCalendar类的对象0x5176e60自动释放,没有池到位 - 只是泄漏
我想我可以放置很多@autoreleasepool,但我的印象是可选的。奇怪的是它只在4.3
上运行时出现我该怎么办?
编辑: 我现在已经放置了一些@autoreleasepool,这大大减少了消息,所以情况似乎就是这样。
答案 0 :(得分:1)
如果你自己在应用程序逻辑中有自己的自动释放池,那么你需要用@autoreleasepool
构造替换它们,编译器会相应地处理它们。
转换为ARC并不一定意味着不再需要现有的自动释放池 - 您仍然需要单个池来包含临时自动释放的对象,例如,其他线程中的循环,因此它们不会永远花费在内存和/或开始泄漏这些线程。请参阅this Apple documentation on using autorelease pools。