2014-02-27 439 views
0

實現的接口就像函數聲明(在頭文件中)到函數定義一樣? 如果我沒有在接口中列出所有已經實現的方法,該怎麼辦?什麼是實例變量呢?Objective-c接口和實現

回答

2

是的接口和實現可以被認爲類似於頭和定義。

如果您沒有列出一些已實施的方法,您將無法從其他類中使用它們。此外,如果他們沒有在@interface部分定義,編譯器會如果您嘗試使用已在呼叫

@implementation 

- (void) functionA 
{ 
    [self functionB]; // error, because 'so far' functionB has not been defined 
} 

- (void) functionB 
{ 
} 

編輯之後已經實現的功能抱怨:參見下面馬丁的評論。 END EDIT

如果您沒有定義實例變量,並且您使用它們,則會出現錯誤。您使用的任何變量必須在本地或在類中定義。

+0

你是什麼意思由本地定義的實例變量? –

+4

當前編譯器版本不*要求實現文件中的方法的前向聲明。 –

+0

@ Naughty.Coder不,我的意思是一個變量必須在本地定義到函數或執行塊(意思是它不是一個實例變量),或者是類中的一個實例變量。 – Merlevede

1

回答您的問題: 接口到實現就像函數聲明(在頭文件中)到函數定義?

如果我沒有在接口列表中的所有方法,這些方法已經實現了?什麼是實例變量呢?

這些方法將被視爲可在該特定類中訪問的私有方法和變量。

在您的接口中聲明的變量(如1.中的變量)在實例化MyClass的對象的其他類中可見。 2.中聲明的變量只能在MyClass中可見。下面是你應該閱讀:我想這些都將幫助你在更深入的瞭解這些事情http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/

http://iosmadesimple.blogspot.in/2012/11/interface-and-implementation.html

+0

無法在Objective-C中聲明私有方法。這些方法可以通過'[object performSelector:@selector(methodName :)];'從任何知道對象的類中訪問。 –