malloc +自动引用计数?

Sta*_*aro 9 malloc objective-c automatic-ref-counting

如果我使用malloc和自动引用计数,我还需要手动释放内存吗?

int a[100];
int *b = malloc(sizeof(int) * 100);
free(b);
Run Code Online (Sandbox Code Playgroud)

das*_*ght 20

是的,您必须将呼叫编码给free自己.但是,如果将指针放在引用计数对象的实例中,则指针可以间接参与引用计数系统:

@interface MyObj : NSObject {
    int *buf;
}
@end

@implementation MyObj

-(id)init {
    self = [super init];
    if (self) {
        buf = malloc(100*sizeof(int));
    }
}
-(void)dealloc {
    free(buf);
}

@end
Run Code Online (Sandbox Code Playgroud)

无法用这种方式编写调用free- 无论如何,你必须在代码中使用它.

  • @stas嗯,不是直接:ARC会调用`[obj release]` - 这是它唯一的工作.只有当释放导致ref计数下降到零时,才会调用`[obj dealloc]`. (2认同)

Gre*_*ill 5

是.ARC仅适用于Objective-C实例,不适用于malloc()free().