何時應該使用消息還是使用C式函數?Smalltalk式消息與C式函數
14
A
回答
21
Objective-c爲您做出了區分。消息必須被髮送到對象,但功能可以隨時使用。
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);
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++的東西,它也許是有意義的。
相關問題
- 1. 在Smalltalk中返回消息
- 2. GNU Smalltalk - 格式化輸出和禁用GC消息
- 3. 如何在Smalltalk中以編程方式替換消息主體?
- 4. Avro消息與模式
- 5. 是否有與Erlang風格的分佈式消息傳遞的Smalltalk版本?
- 6. 消息格式
- 7. 格式Spring:消息參數
- 8. 格式化消息參數
- 9. Smalltalk/Squeak消息處理方法
- 10. 使用C#的消息格式#
- 11. C#觀察者模式消息過濾
- 12. C++序列化消息的方式?
- 13. lambda表達式和消息框在C#
- 14. Django的allauth自定義消息:與HTML/CSS樣式消息
- 15. 活動啓動模式與GCM消息
- 16. 消息模式密碼與WCF服務
- 17. 消息框格式
- 18. 方式XML消息
- 19. 帶消息格式參數的Throwable構造函數
- 20. Smalltalk可變參數函數
- 21. 消息傳遞在C++函數
- 22. 最快的方式在Smalltalk
- 23. 裝飾模式在smalltalk
- 24. C/C++與函數與表達式的區別?
- 25. 複雜數據\消息的kafka消息格式
- 26. Lambda表達式與程序式函數
- 27. TNEF嵌入式消息格式
- 28. HTML格式的驗證消息樣式
- 29. javascript格式評估的格式消息
- 30. 數據庫的遊戲消息模式
感謝您的留言。 – Jake 2009-05-05 19:18:15