尝试通过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 *'类型的参数会更改指针的保留/释放属性
答案 0 :(得分:3)
您需要更新签名以匹配新的兼容ARC的getObjects:andKeys:
- (void)getObjects:(id __unsafe_unretained [])objects andKeys:(id __unsafe_unretained [])keys;
此处的默认内存语义为__autoreleasing
,但此方法返回__unsafe_unretained
个对象,因此您也需要这样做。
请注意,这些是__unsafe_unretained
。当您返回id
数组时,它们没有应用内存管理。因此,如果self
消失,这些对象也可能会(并且它们不会像weak
属性那样将指针归零)。这通常是好的,你想要什么,但记住它。