从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/