iphone - Xcode 4 ARC 重新检查错误 - "changes retain/release properties of pointer"

标签 iphone objective-c ios automatic-ref-counting

正在尝试通过 ARC 转换的重新检查,但我不确定如何解决此问题。方法和属性不一致,我不知道该怎么办:

- (void)getObjects:(id *)objects andKeys:(id *)keys {
     return [self.items getObjects:objects andKeys:keys];
}

@interface SoapArray : SoapObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> {
      NSMutableArray* items;
}

@property (nonatomic, retain) NSMutableArray* items;

错误:

将“__autoreleasing id *”发送到“__unsafe_unretained id *”类型的参数会更改指针的保留/释放属性

最佳答案

您需要更新签名以匹配新的 ARC 兼容 getObjects:andKeys:

- (void)getObjects:(id __unsafe_unretained [])objects andKeys:(id __unsafe_unretained [])keys;

这里默认的内存语义是__autoreleasing,但是这个方法返回__unsafe_unretained对象,所以你也需要这样做。

请记住,这些是 __unsafe_unretained。当您取回 id 数组时,它们没有应用内存管理。因此,如果 self 消失,这些对象也可能会消失(并且它们不会像 weak 属性那样将指针归零)。这通常没问题,而且是您想要的,但请记住这一点。

关于iphone - Xcode 4 ARC 重新检查错误 - "changes retain/release properties of pointer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8492029/

相关文章:

iPhone : Does a rapidly updating (60Hz) accelerometer drain battery?

objective-c - 如果时间为零,如何使 NSDateFormatter 不包括时间?

ios - 模仿 iOS 10 上的 adjustmentContentInset?

ios - 如何为uitableview自定义多选编辑模式

iphone - 从自定义类中获取标签值

ios - 如何通过 objective-c 中的 POST 请求捕获 stderr 输出并将消息发送到远程日志文件?

iphone - UISearchBar inputAccessoryView 的问题

IOS5是否可以更改双高状态栏的文本?

iphone - 如何在iOS 6中的后台播放音频文件?

iphone - 本地化 Storyboard时从正确的包中加载图像