2011-09-16 26 views
0

我想知道保留在下面的屬性聲明中有什麼影響(如果有的話)。手動執行的setter將保留該變量。如果手動執行setter,是否需要(保留)?

接口:

@property (nonatomic, retain, setter=setIncident:) Incident * incident; 

實現:

- (void)setIncident:(CSIncident *)newIncident 
{ 
    if (incident != newIncident) 
    { 
     [incident release]; 
     incident = [newIncident retain]; 
    } 
} 
+0

注意的有差別,裏面的釋放和保留之間的訪問,如果將返回nil對象。 – Jano

+0

是的,我想你會推薦autoreleasing對象? – mrd3650

+0

是的,'[事件autorelease];事件= newIncident;'或'ID =事件;事件= [newIncident retain]; [舊版本];'如果你喜歡,你可以添加'if'。或者只是刪除整個事物並使用@synthesize生成的方法。生成的代碼在這裏:http://www.opensource.apple.com/source/objc4/objc4-371.2/runtime/Accessors.subproj/objc-accessors.m – Jano

回答

0

它不會有太大的價值,因爲你手動控制所設定的動作和擋手動它。

唯一的(非常小的)值將是可讀性,以便了解您僅查看標題時的行爲,並且如果刪除手動實現(但您已經必須刪除setter =),則可以減少流失。

在你的問題你也有setDog和setIncident

+0

@brynanmac THanks的答案和指出(現在固定)不匹配。 – mrd3650

相關問題