2009-05-05 31 views

回答

21

Objective-c爲您做出了區分。消息必須被髮送到對象,但功能可以隨時使用。

messages

Objective-C的消息只能被髮送到對象,消息系統是做出一個類的方法調用方式。

例子:

// a class interface definition 
// including a method named aMethod 
@interface ANObject 
{ 

} 
- (void)aMethod; 
@end 


// a message sent to that object: 
ANObject * myObject = [[ANObject alloc] init]; 
[myObject aMethod]; // <-- message 
[myObject release]; 

功能

的Objective-C繼承了所有C語言的,所以C風格的函數調用的支持,甚至鼓勵,當情況要求他們。 Objective-C對象只是作爲指針傳遞,所以你仍然可以將它們作爲參數傳遞給函數。當然,關於通過函數指針的通常警告和規則應該受到尊重。

實施例:

// a regular C-style function 
void someFunction(ANObject * argument) 
{ 
    // do something here... 
} 


// and how to call it: 
someFunction(someObject); 

時使用的呢?

使用消息/方法當你想訪問對象/類的某些操作。很好的例子將訪問一個NSString的長度:

int stringLength = [myString length]; 

設置屬性的值:

[myObject setHidden:YES]; 

或者告訴對象執行某些任務:

[myAccount withdrawMoneyAndDriveToMexico]; 

按C風格函數當你想執行一個不屬於某個類的任務時;應該獨立的東西。好的例子是數學函數,如:

double degrees = ConvertRadiansToDegrees(radians); 
+0

感謝您的留言。 – Jake 2009-05-05 19:18:15

4

基本上,任何時候處理Objective C組件都要使用消息;或多或少的任何時候你使用NS *類型。

在封面下,你基本上使用C函數調用; Objective C的原始實現是C的預處理器。但使用Objective C的全部意義在於獲得Smalltalk的語法,這就是[]中的任何地方。

2

你問了很多Java問題;也許Java的比喻會有所幫助。在Java中使用方法的地方,在Objective-C中使用消息。在Java中使用靜態方法的地方,在Objective-C中使用類方法。如果您發現自己在Java中創建了充滿靜態方法的實用程序包,那麼這在Objective-C中可能是有意義的。

而且,當然,如果你正在做奇怪的Objective-C++的東西,它也許是有意義的。