永遠不要初始化一個對象,不要重新指派任何指向該對象的指針。作爲一個例子,不這樣做:ObjC-爲什麼分離實現[alloc]和[init]方法時不正確?
NSObject *someObject = [NSObject alloc];
[someObject init];
如果調用初始化返回一些其他的對象,你會留下一個指針,最初被分配,但從來沒有初始化的對象。
其實,這是蘋果的ObjC文檔中的例子,但我不與此相當明確,那就是爲什麼NSObject *someObject = [[NSObject alloc] init]
可以答應回到我們剛纔所需要的對象,而NSObject *someObject = [NSObject alloc]; [someObject init];
不能?
每當我需要做[[.... alloc] init],我更喜歡[...新]。保存輸入和代碼看起來更小。如果你需要做initWith ...那麼別無選擇。 –
en,[[... alloc] init]等價於[... new],如果您只需要一個僅用於init的對象,如果存在任何實例變量值,則將其設置爲0。 – abyn