0
什麼是這兩種方法之間的主要區別:Objective-C的對象創建方法的差異
+ (id)videoGameWithTitle:(NSString *)newTitle publisher:(NSString *)newPublisher year:(int)newYear {
VideoGame *game = [[[VideoGame alloc] init] autorelease];
game.title = newTitle;
game.publisher = newPublisher;
game.year = newYear;
return game;
}
- (id)initVideoGameWithTitle:(NSString *)newTitle publisher:(NSString *)newPublisher year:(int)newYear {
self = [super init];
if(self) {
self.title = newTitle;
self.publisher = newPublisher;
self.year = newYear;
}
return self;
}
第一種方法不是初始化:它是[便利構造函數](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocAllocInit.html)。第二種方法是嘗試成爲一個初始化程序,但由於它是一個試圖表現爲實例方法的類方法,因此失敗了。作爲一個方面說明,第二種方法不遵循Cocoa的命名初始化程序的規則,如'init ...' – 2011-06-14 10:22:32
@Bavarious - +1爲您的評論。我已經修復了這個問題中的拼寫錯誤,因爲我懷疑@Peter希望第二種方法實際上是一個正確命名的初始化方法。 (方法體當然看起來像他想的那樣。) – 2011-06-14 11:02:00
@sherm Pendley - 回滾您的編輯。你已經完全改變了這個問題 - 你認爲OP確實犯了很多錯別字 - 使它成爲一個不同的問題。 – Abizern 2011-06-14 11:55:00