Nelson 寫些 iOS 開發的東東

Posts match “ iOS8 ” tag:

千萬不要為了懶惰而用 new

| Comments

我們公司的 APP 一開始是請外包團隊幫忙開發,後來才找正職工程師進去維護的。不得不說,那個外包團隊的 iOS APP 工程師素質真的不怎麼樣,程式碼裡頭用了許多應該避免的寫法,其中一個就是它們大量的使用 [XXXObject new]

[XXXObject new] 其實是一個語法糖,它實際上會幫你轉成 [[XXXObject alloc] init],那這樣會有什麼問題呢?問題在於,我們在 init 時通常都需要傳入一些參數,而且很多時候該物件的 designated initializer 並不是 init。舉例來說,UITableViewControllerinitWithStyle:(UITableViewStyle)styleUIViewinitWithFrame:(CGRect)frame

所以偷懶用 new 的話,很有可能產生出來的物件會跟你預期的不一樣。我們的 APP 在 iOS 8 底下整個畫面爛掉,就是因為這個原因。