正在尝试通过 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/