1. 標頭檔依然是.h
2. .cpp變成了.m
3. #import代替了#include,#import保證只會引用一次,相當於.h裡的#ifndef #define #endif模式
4. 用@interface … @end來聲明類,取代class ClassName{}
5. 用@implementation … @end來實作類別
6. Data Members放在@interface ClassName : Parent{ … }中,預設許可權為@protected,在ObjC裡稱為Instance Variables
7. Member Functions放在@interface ClassName: Parent{} … @end中,在ObjC裡稱為Instance Methods
8. Instance Methods的聲明方式為:scope (returnType) methodName: (parameter1Type) parameter1Name;
9. scope分instance和class兩種,分別用-和+表示
10. 調用method的方式是[object method],相當於object->method()
11. 帶參數調用method的方式是[object method: parameter]
12. 沒有Object,只有Pointer to Object
13. 通常的構造方式: Object * obj = [[Object alloc] init]
14. 析構的方式:[obj release]15.多參數method的聲明方式: scope (returnType) methodName: (parameter1Type) parameter1Name label1Name: (parameter2Type) parameter2Name … ;
16. labelName不是必須的
17. 這種特別的文法源自SmallTalk
18. private: [list of vars] protected: [list of vars] public: [list of vars] 改成了@private, @protected, @public
19. Class Variable用static的方法實現⋯⋯
20. +(void) initialize 會在構造的時候被調用
21. ObjC通常用@符號表示語言的衍生部分
22. ObjC用id來表示範型對象的指標
23. 支援動態類型識別
24. Categories機制可用於不繼承已有class的前提下加入新功能
25. Posing機制允許Child取代Parent
26. Protocol相當於pure virtual class
27. ObjC由兩種記憶體管理的方法,1) retain and release,2) retain and release/autorelease
28. Foundation相當於STL,NSArray對應vector,NSDictionary對應map
29. ObjC不支援Namespace
30. 不支援重載