Xcode/Cocoa弧和MRC类。MRC自动释放会导致ARC类内存泄漏吗?
我正在开发一个可可应用程序。大多数应用程序都是ARC,但我使用的是AmazonSDK的iOS版本,即MRC。(我只对amazon类进行了一些更新,因此它可以与Cocoa一起使用) 我已经为我正在与-fno objc ARC一起使用的所有amazon文件禁用了ARC 如果我在一个ARC类中使用AmazonSDK中的一个MRC类。我需要用@autorelease环绕它吗Xcode/Cocoa弧和MRC类。MRC自动释放会导致ARC类内存泄漏吗?,cocoa,automatic-ref-counting,autorelease,Cocoa,Automatic Ref Counting,Autorelease,我正在开发一个可可应用程序。大多数应用程序都是ARC,但我使用的是AmazonSDK的iOS版本,即MRC。(我只对amazon类进行了一些更新,因此它可以与Cocoa一起使用) 我已经为我正在与-fno objc ARC一起使用的所有amazon文件禁用了ARC 如果我在一个ARC类中使用AmazonSDK中的一个MRC类。我需要用@autorelease环绕它吗 @implementation MyARCClass - (void) doSomethingWithMyClass {
@implementation MyARCClass
- (void) doSomethingWithMyClass {
@autorelease {
[self.myClass doStuff];
}
}
我在Amazon类中遇到内存泄漏,无法找到它的来源
比如说。假设MRC类是这样的:(这是为了简化我的问题而精心设计的):
那么假设我在ARC中的某个地方使用该类:
@implementation MyARCClass
- (void) doSomethingWithMyClass {
[self.myClass doStuff];
}
@end
我需要用@autorelease包装对MyMRCClass的调用吗
@implementation MyARCClass
- (void) doSomethingWithMyClass {
@autorelease {
[self.myClass doStuff];
}
}
@结束
谢谢。您不需要
@autorelease
,除非它是新线程的入口点。应该在主函数中为您创建主线程上的自动释放池
只要您平衡了retain
/release
和正确的命名转换,并且没有保留周期,就可以了
如果你做得正确,MRC不会改变任何东西,它应该像ARC一样工作
阅读以了解何时使用它