从c++到Objective-C

1. 头文件依然是.h

2..cpp变成了.m

3.#import代替了#include,#import保证只会引用一次,相当于.h里的#ifndef#define#endif模式

4.用@interface…@end来声明类,取代classClassName{}

5.用@implementation…@end来实现类

6.DataMembers放在@interfaceClassName:Parent{…}中,默认权限为@protected,在ObjC里称为InstanceVariables

7.MemberFunctions放在@interfaceClassName:Parent{}…@end中,在ObjC里称为InstanceMethods

8.InstanceMethods的声明方式为:scope(returnType)methodName:(parameter1Type)parameter1Name;

9.scope分instance和class两种,分别用-和+表示

10.调用method的方式是[objectmethod],相当于object->method()

11.带参数调用method的方式是[objectmethod:parameter]

12.没有Object,只有PointertoObject

13.通常的构造方式:Object*obj=[[Objectalloc]init]

14. 析构的方式:[obj release]

15.多参数method的声明方式: scope (returnType) methodName: (parameter1Type) parameter1Name label1Name: (parameter2Type) parameter2Name … ;

16.labelName不是必须的

17.这种特别的语法源自SmallTalk

18.private:[listofvars]protected:[listofvars]public:[listofvars]改成了@private,@protected,@public

19.ClassVariable用static的方法实现⋯⋯

20.+(void)initialize会在构造的时候被调用

21.ObjC通常用@符号表示语言的衍生部分

22.ObjC用id来表示范型对象的指针

23.支持动态类型识别

24.Categories机制可用于不继承已有class的前提下加入新功能

25.Posing机制允许Child取代Parent

26.Protocol相当于purevirtualclass

27.ObjC由两种内存管理的方法,1)retainandrelease,2)retainandrelease/autorelease

28.Foundation相当于STL,NSArray对应vector,NSDictionary对应map

29.ObjC不支持Namespace

30. 不支持重载

trackback:http://icomes.net/tag/objc/

相关推荐