2013-07-31 42 views
4

最近有人告訴我蘋果正在鼓勵使用新的,和谷歌公司的iOS編碼標準也有這樣一段話:我應該避免使用new來初始化我的對象嗎?

不要調用NSObject類方法新,也沒有在子類覆蓋它。相反,使用alloc和init方法來實例化保留的對象。 現代Objective-C代碼顯式調用alloc和一個init方法來創建和保留一個對象。由於很少使用新的類方法,因此更難以檢查正確的內存管理代碼。

雖然爲什麼會讓審查代碼正確的內存管理更困難?

+3

「由於新類方法很少使用」 - 人們並不期待它。 – Kevin

+0

@aaronman它不是 – jfisk

+0

我不喜歡'new',因爲它隱藏了一個'alloc' +'init' ...你不會立即得到它,並且可能會忘記釋放你的對象,從而產生一些問題...這就是報價所說的。 – Larme

回答

4

我期望引用易於閱讀的代碼僅僅意味着您的代碼的人類讀者可能不會注意到「新」一詞,因爲他們的眼睛掃描尋找alloc-init調用的代碼。

在Objective-C中,單詞'new'是調用alloc和init的快捷方式。但是你不能傳遞論據;你正在調用無參數構造函數。如果您稍後更改您的代碼以致您現在要調用其他構造函數之一併傳遞參數,則需要將「新」更改爲alloc-init。這很常見,所以它首先是避免調用「新」的另一個原因。

通過調用alloc-init調用'new'沒有任何優勢。 「新」字只在Objective-C中使用,因爲其他語言(如Java)使用該關鍵字。

相關問題