Assign用於簡單數據類型,如NSInteger、double、bool、?保留和復制用於對象。當A指向壹個對象,B想指向同壹個對象時,就使用Copy。如果使用assign,如果A被釋放,調用B會崩潰。如果使用復制?這樣A和B各自有自己的內存,就可以解決這個問題了。?
保留?將計數器加壹,也可以解決賦值的問題。?
此外,原子和非原子用於確定編譯器生成的getter和setter是否為原子操作。在多線程環境中,原子操作是必要的,否則可能會導致錯誤的結果。?添加了atomic後,setter函數看起來會是這樣的:?如果?(物業?!= & ampnbspnewValue)?{?[財產與財產。nbsp release];?
財產?=?新價值& ampnbsp retain];?}?