2011-12-13 46 views
3

嘗試通過ARC轉換的重新檢查,但我不確定如何解決此問題。該方法和屬性都發生矛盾,我不知道在這裏做什麼:Xcode 4 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標識*」的變化保持/指針

回答

3

你需要更新你的簽名,以符合新的ARC兼容​​

- (void)getObjects:(id __unsafe_unretained [])objects andKeys:(id __unsafe_unretained [])keys; 
的釋放特性

此處的默認內存語義爲__autoreleasing,但此方法返回__unsafe_unretained對象,因此您也需要。

請記住,這些是__unsafe_unretained。當你找回你的數組id時,他們沒有應用內存管理。因此,如果self消失,這些對象可能也會(並且它們不會像weak屬性那樣歸零指針)。這通常是好的,你想要什麼,但記住它。