我可能會在這裏丟失一些明顯的東西,但是我在其中一個對象上實現了NSCopying。該對象具有不通過getter公開的私有實例變量,因爲它們不應該在對象之外使用。使用NSCopying複製私有實例變量的最佳做法
在我的copyWithZone:
的實現中,我需要alloc/init新實例,還要設置其狀態以匹配當前實例。我顯然可以從copyWithZone:
內部訪問當前的私有狀態,但我無法將其設置爲新對象,因爲沒有該狀態的訪問者。
有沒有一個標準的解決方法,同時仍然保持數據隱私完好?
謝謝。
感謝提及私有訪問器以及NSCopyObject的風險。 – 2010-04-02 15:40:40
我不確定只讀訪問器如何幫助內存管理?如果你沒有用'assign'或'retain'來使用它,不管你是直接使用getter還是變量都沒有區別。 – Hemant 2011-01-20 03:22:05
@Hemant,因爲調用者不需要小心該屬性目前(或將來)是否只讀。這不是調用者的業務,它可能會隨着時間而改變,然後您需要搜索不正確的代碼。通過堅持簡單的規則,錯誤變得明顯。當你說「哦,除非我碰巧知道它現在沒問題」,那麼你正在爲自己的維護問題而煩惱。 – 2011-01-20 19:44:05