我正在使用Cocoa App。大多数应用程序都是ARC,但我使用的是适用于iOS的Amazon SDK版本,即MRC。 (我只对亚马逊课程做了一些更新,所以它适用于Cocoa)。
我已使用-fno-objc-arc的所有亚马逊文件禁用ARC。
如果我在其中一个ARC类中使用Amazon SDK中的一个MRC类。我需要用@autorelease包围它吗?
我遇到了来自亚马逊类的内存泄漏,但未能找到它的来源。
例如。让我们说MRC课程就是这样的:(这是为了简化我要问的问题而设计的):
@implementation MyMRCClass
- (void) doStuff {
NSArray * tmp = [[[NSMutableArray alloc] init] autorelease];
}
@end
然后让我说我在ARC的某个地方使用那个类:
@implementation MyARCClass
- (void) doSomethingWithMyClass {
[self.myClass doStuff];
}
@end
我是否需要使用@autorelease?
包装对MyMRCClass的调用@implementation MyARCClass
- (void) doSomethingWithMyClass {
@autorelease {
[self.myClass doStuff];
}
}
@end
感谢。
答案 0 :(得分:1)
除非是新主题的入口点,否则不需要@autorelease
。应在主函数中为您创建主线程上的自动释放池。
只要您平衡retain
/ release
并且正确命名转换,并且没有保留周期,它应该没问题。
如果你正确地做了,MRC不会改变任何东西,它应该像ARC一样。
阅读documentation了解何时使用它。