如何在ARC代码上使用非const类型?

时间:2015-06-08 15:08:15

标签: ios objective-c

关注Apple's examples之一,我得到了

Pointer to non-const type 'id' with no explicit ownership

还有其他一些错误...... 这是我的片段:

NSArray *mArray = argsList;
id *objects;
NSRange range = NSMakeRange(2, [argsList count]);
objects = malloc(sizeof(NSString *) * range.length);
[mArray getObjects:objects range:range];
for (i = 0; i < range.length; i++) {
    NSLog(@"Args: %@", objects[i]);
}
free(objects);

错误从第二行开始。我的猜测是我必须禁用ARC,但如果有办法保留它,我会更高兴。 我怎么能这样做? (是的!我需要一个身份证*)

1 个答案:

答案 0 :(得分:0)

由于Cy-4AH建议__unsafe_unretained解决了这个问题:

现在看起来像:

NSArray *mArray = argsList;
__unsafe_unretained id *objects;
NSRange range = NSMakeRange(1, [argsList count]-1);
objects = (__unsafe_unretained id*)malloc(sizeof(NSString *) * range.length);
[mArray getObjects:objects range:range];