2013-05-22 28 views
-4

我的困惑來自下面的代碼。什麼是主要區別,什麼時候使用第一個例子而不是另一個?兩者都創建對象,但我不瞭解它們之間的差異。使用init與標準方式創建對象有什麼區別?

-(id)initWithCoder:(NSCoder *)aDecoder { 
    if ((self = [super init])) { 
     self.text = [aDecoder decodeObjectForKey:@"Text"]; 
     self.checked = [aDecoder decodeBoolForKey:@"Checked"]; 
    } 
    return self; 
} 

比說:

NSString *string = [[NSString alloc] init]; 
+1

第一個是特定init方法的實現。第二個是調用一個不同的,更簡單的init方法。首先是初始化對象。第二個要求被調用者初始化對象。 –

+5

問題的標題有點混淆 - 'init'是我的標準方式,我會說。 – Monolo

+0

你問什麼'initWithCoder:'是什麼? –

回答

1

在第一種情況下,你是在給學生上課/子爲如何在實現(.m文件)啓動時的行爲類/子類,而在第二個示例中,您正在將一個現有對象啓動到一個變量中。

希望這會有所幫助。如果需要,我會很樂意進一步澄清。

參考:http://developer.apple.com/library/ios/#Documentation/General/Conceptual/CocoaEncyclopedia/Initialization/Initialization.html

+0

感謝這個鏈接幫助我瞭解了我正在遵循的教程解釋。 – kenthub

+0

很高興有幫助:)祝你好運! – kushyar

相關問題