2013-05-16 189 views

回答

1

問題是他們不希望你改變背後的陣列。他們並不真的希望你改變UIBarButtonItem。從技術上講,你不知道訪問者在內部做了什麼(它可以深層複製我們所知道的),但是該屬性告訴你它至少會複製數組,這樣如果你選擇在之後改變數組內容(假設它是可變的)那麼一切都將繼續工作。

+0

我可以看到。但我仍然有處理我的原始數組中的所有UIToolbarItems。我想有些保護總比沒有保護好。 –

1

因爲您可能會分配一個可變數組。該副本確保如果在將其分配給工具欄後更新可變數組,工具欄不受影響。

2

這與NSMutableXXX類集羣成員相當標準,您應該在您自己的屬性中執行相同操作。例如,如果你有一個NSString屬性,那麼你應該使它成爲copy,而不僅僅是strong,以免客戶端給你一個NSMutableString,保留對它的引用並對它進行變異。

copymutableCopy使用的NSArray的和NSMutableArray中之間的切換僅僅作爲輕量級的方式,等

+0

並參閱http://stackoverflow.com/questions/587414/nsstring-property-using-copy-instead-of-retain?rq=1 – matt

相關問題