1、@interface 生命类
2、@implementation 实现类
3、@protocol 声明协议
4、@optional 与 @protocol配合使用,说明协议中某个或某几个协议方法可以不实现
5、@required 与@protocol配合使用,说明协议中的某个方法或者某几个方法必须实现
6、@end 与@interface,@protocol,@implementation配合使用,代表声明或者实现结束
7、@encode 为编译器宏,它可以将类型转换为相应的字符串。
8、id
是指向object-c类对象的指针,它可以声明为任何类对象的指针,当在objectIve-c使用id是,编译器会假定你知道,id指向哪个类的对象,与void*不同的是,void*不知道也不假定指向任何类型的指针。
9、nil
定义为一个常量,如果一个指针的值为nil,代表这个指针;没有指向任何对象
10、self
在objectIve-c,关键字self与c++中this是同一概念,就是类对象自身的地址,通过self可以调用自己的实例变量和实例方法。
11、super
当子类调用父类的方法时,会用到super关键字,super指向的是父类的指针,子类重写父类的方法时,调用父类的方法是比较好的习惯,因为我们不知道父类在该方法中实现的功能,如果不调用父类的方法,有可能重写的方法会失去该功能,这是我们不愿看到的
12、NSNull
就是没有的意思,如果一个字典中的值为NSNull,那说明与该值对应的key是没有值的,例如key为address,说明与address对应的是值是没有
13、new
在objectIve-c有一个特性,就是可以把类当成对象来发送消息,这种用法通常用于新建对象时,例如 XXX *object = [XXXX new];
14、类方法 +
如果想声明属于类而不属于类对象的方法,用+, +用来修饰类的方法,使用+修饰的类方法,是整个类的方法,不属于哪一个类对象,这与c++中的static在类中使用的概念一样。
15、%@
在NSLog中,使用%@表示要调用对象的description方法。
16、类
是一种结构,它表示对象的类型,就像int与char一样,也可以声明类的变量
17、实例化
为类的对象分配内存和初始化,达到可以使用该类对象 的目的
18、 消息
在objectIve-c中,类的对象执行的操作,是通过给该类或者该类对象发送消息实现,如:[object func];就是给object对象发送func消息,类似c++中的方法的调用。给object对象发送func消息后,object对象查询所属类的func方法执行。
19、方法调度
当向一个对象发送消息时(调用方法),这个方法是怎么被调用的呢?这就依赖方法高度程序,方法调度程序查找的方法如下:、
在本类的方法中,找被调用的方法,如果找到了,就调用,如果找不到,就被沿着继承路径去查找,从哪个类找到,就调用哪个类的方法,如果到最根上的类还是没有找到,那编译就会出错。
20、继承和复合
在objectIve-c中支持继承,但只是支持单一继承(有且只有一个父类)如果想要使用多继承的特性,可以使用分类和协议技术
复合是通过包含指向对象的指针实现的,严格意义上讲,复合是针对于对象间来说的,对于基本数据类型来说,他们被认为是对象的一部分
21、装箱和拆箱
由于NSArray,NSDirectiory等类不能直接存储基本数据类型,所以要想在NSArray\NSDirectory中使用基本数据类型就得使用装箱和拆箱
在objectIve-C中,可以使用NSNumber和NSValue来实现对数据类型的包装,NSNumber可以实现对基本数据类型的包装,NSValue可以实现对任意类型数据类型的包装。
讲基本类型封装成对象也叫装箱,从封装的对象中提取基本数据类型叫拆箱,其他语言加Java原生支持装箱和拆箱,objectIve-C不支持自动装箱和拆箱,如果需要得需要自己来实现装箱和拆箱
22、存取方法
在使用类对象的实例变量(成员数据)时,不要直接使用对象中的实例,要使用存以方法来获取或者修改实例,既setter和getter,在cocoa中,存取方法有命名习惯,我们得符合这种习惯,以便于与其他团队成员合作,setter方法是修改或者设置实例值,命名习惯为set+实例名,例有一个类有path实例变量,那setter命名为setpath,getter方法命名为Path,为什么不是getPath,因为get在cocoa中有特殊的含义,这个含义就是带有get的方法就意味着这个方法通过形参指针来返回值,我们要遵守这个命名习惯或者说规则。
23、@property与@synthesize