Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode/Cocoa弧和MRC类。MRC自动释放会导致ARC类内存泄漏吗?_Cocoa_Automatic Ref Counting_Autorelease - Fatal编程技术网

Xcode/Cocoa弧和MRC类。MRC自动释放会导致ARC类内存泄漏吗?

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 {

我正在开发一个可可应用程序。大多数应用程序都是ARC,但我使用的是AmazonSDK的iOS版本,即MRC。(我只对amazon类进行了一些更新,因此它可以与Cocoa一起使用)

我已经为我正在与-fno objc ARC一起使用的所有amazon文件禁用了ARC

如果我在一个ARC类中使用AmazonSDK中的一个MRC类。我需要用@autorelease环绕它吗

@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一样工作

阅读以了解何时使用它