一、代码文件类型: java
(1)、[.h]头文件 c++
(2)、[.m]c代码 函数
(3)、[.mm]c++代码 ui
二、调用头文件的方法#import,且只在没有调用过的时候调用一次,相似于PHP的require_once。 this
三、字符串NSString spa
经过@标志符,可由字符串常量定义NSString对象。如, 指针
NSString *f = @”岁月长”; 日志
四、类(Class) code
(1)、定义 对象
Objective-C定义类先用在.h头文件里定义接口,而后在.m代码文件里实现。
.h头文件
@implementation到@end之间的部分被看做是类的定义。
.m文件
(2)、类实例化
类名* 类实例名=[[类名 alloc] init]
或
类名* 类实例名=[类名 new]
(3)、类型
Objective-C的对象定义能够支持强类型的实例,以及弱类型(用“id”表示)的实例的定义。
(4)、方法(Methods)
方法Methods亦称函数,在Objective-C的类与java Class相似,能够定义“实例的方法”和“类的方法”。
用负号[-]表示该方法为实例的方法
(5)、发送消息
Objective-C调用方法是经过发送消息给对应的实例对象。发送消息的方式实际上是和其它的语言同样就是调用实例对象的方法,Ojbective-C独特的地方就是方法的调用是经过一个方法名+零个或多个标识符+零个或多个参数,而通常语言只须要一个方法名+零个或多个参数就能够了。Ojbective-C之因此把调用方法称为发送消息,是因其全部的消息发送以后都是动态传递给实例对象。而且,若是一个子类定义了一个和父类相同方法名+标识符的方法以后,子类会先收到该消息,而后选择性的是否继续将该消息传递给父类。
发送消息是经过一对方括号[]来实现,如
实例对象在左边,消息以及参数等的定义在右边。且为避免生成多余的临时变量,Objective-C容许直接使用消息的结果,以下
(6)、类方法
相似于静态方法,定义的时候和实例的方法有区别的地方只是在开头的符号为加号[+]。
(7)、属性@property
属性是一个能够取代方法的方便符号。在类中声明定义属性时,并不建立新的实例,就是一个可以方便快捷的用来访问实际已经存在的变量的。也就是说,属性其实并无真正的存储任何数据。
属性还能够定义一些访问该属性时的限制或者如何获取该属性,例如指定copy用来复制该属性,readonly用来指定该属性只读。
调用某实例的属性有两种方法,一种是经过方括号,和调用方法相似,另一种是经过点符号[.]。
(8)、方法返回值
在Objective-C里面方法的返回类型须要用圆括号包住,当编译器看到减号或者加号后面的括号了以后,就会认为这是在声明方法的返回值。若不声明返回值,编译会给没有写显式返回值的函数加上一个默认的返回值,它的类型是id。
(void)申明没有返回值。
(9)、self和super
self等同于this,其自己是一个id类型的一个指针变量。
访问变量self->变量名称。
super访问超类的方法或变量。
五、协议和委托(Protocols and Delegates)
Objective-C中的协议(Protocols)相似于经常使用的接口,协议(Protocols)中定义的方法,在类中实现。
六、内存使用
(1)、ReferenceCounted,即应用计数,过程:alloc--->retain--->release--->--->release--->dealloc。
(2)、NSAutoreleasePoolalloc
七、打印日志NSLog
NSLog(@“岁月长,衣衫薄。”);
八、布尔值
在Objective-C里面,Bool实际上是singed char,YES是1,NO是0。其里面的全部逻辑判断和C语言保持兼容,若是数据不是0判断为真,若是数据是0那么就判断为假。
九、SEL、Class、IMP
(1)、Objective-C在编译的时候,会根据方法的名字(包括参数序列)生成一个用来区分这个方法的惟一标识,这个标识就是SEL类型。
SEL 变量名=@selector(方法名字);
SEL 变量名=NSSelectorFromString(方法名字的字符串);
NSString* 变量名=NSStringFromSelector(SEL 变量名);//返回SEL变量对应的方法名。
(2)、Class相似于java中的Class,能够用来获取所定义类的相关信息.。
Class 变量名=[类或对象 class];
Class 变量名=[类或对象 superclass];
Class 变量名=NSClassFromString(类名字的字符串);
NSString* 变量名=NSStringFromClass(Class 变量名);//返回类名字。
(3)、IMP,给一个方法起一个名字,实现动态调用,不用再使用[对象 message]的方式。
Human* human =[Human new]; Man* ma=[man new]; //根据方法名say找到该方法的id,将sel与其绑定; SEL sel =@selector(say);//也能够这样写:SEL sel=NSSelectorFromString(@"say"); IMP imp1 = [human methodForSelector:sel]; IMP imp2 = [ma methodForSelector:sel]; imp1(human,sel); imp2(ma,sel);
//由于每一个方法都有本身的地址,这种方式直接找到地址区分相同ID的方法,效率最高,但灵活性不如SEL方式。
十、实例变量做用域
@private
@protected
@public
其意义跟java相应的关键字等同。
而类方法在Objective-C里面,从理论上来讲全部的方法都是公有的。
十一、Final
不想让某个方法被重写,只需定义一个宏
#define FINAL