1.@property 声明属性:
例如:@property NSString *name;
2.使⽤用@synthesize实现属性
例如:@synthesize name = _name;
3.ARC( Auto Reference Count:自动引用计数 )来代替之前的MRC(Manual Reference Count:手动引用计数)。
4.iOS没有垃圾回收装置
5.iOS⽀支持两种内存管理⽅方式:ARC和MRC。
MRc的内存管理机制是:引⽤用计数。
ARC是基于MRC的。
6.+alloc:开辟内存空间,让被开辟的内存空间的引⽤用计数变为1。这是由0到1的过程。
7. -retain:引⽤用计数加1,如果内存空间之前引⽤用计数为1,ratain之后变为2,如果引⽤用计数是5,retain之后变为6。
-copy把某一内存区域的内容拷贝一份,拷贝到新的内存空间里去,被拷贝区域的引用计数不变,新的内存区域的引用计数为1
-release引用计数减1,如果内存空间之前引用计数为4,release之后变为3,如果之前引用计数为1,release之后变为0,内存被系统回收
-autorelease:未来的某一时刻引用计数减1.如果内存之前引用计数为4,autorelease之后仍为4,未来某个时刻会变为3.
6.如果属性是非对象类型(比如int ,float等)属性的语义设置使用assign。如果属性是对象类型(比如nsstring 、nsarray 等)属性的语义设置使用retain。如果属性是对象类型并且想得到参数的copy,使用copy关键字
应用:@property 最新的X-cold的可以省略实例变量 与 setter getter方法
7.在一个类中声明属性@property NSString *name;
相当于在 .h 文件声明了实例变量_name的setter、getter方法
在一个类中声明@synthesize name = _name;
相当于在.m文件实现了实例变量_name的setter、getter方法
声明一个属性,相当于声明一个“_name”,在属性名前面加_ 的实例变量
注意1:在需要重新同时重写setter、getter方法的实现的时候,需要写
@synthesize name = _name;不然只需要写 @proprrty NSString *name编译器就会自动生成setter、getter方法的声明和实现
注意2:属性就是一对setter、getter方法
8.引⽤用计数的增加和减少相等,当引⽤用计数降为0之后,不应该再使⽤用这块内存空间。
凡是使⽤用了alloc、retain或者copy让内存的引⽤用计数增了,就需要使⽤用release或者autorelease让内存的引⽤用计数减少。在⼀段代码内,增加和减少的次数要相等。
9.取两个时间对象的间隔:
NSTimeinterval = [tomorrowDate
timeIntervalSinceDate:
yesterdayDate];
10.category
a.只能为类添加方法;
b.新添加的方法会成为原始类的实例
11.extension
a.相当于把 .h 文件挪到 .m里面
b.管理类的私有方法
12.protocol 协议
a。协议是一套标准,只有.h 文件就像一张任务清单,上面写了一堆需要处理的事情。清单交给谁 ,谁就要去完成上面规定的任务。
b、协议里面:有两种实现方式 :
1.默认方式是:@required
2.可选择的是:@optionnal
13.dealloc是NSObject的⼀一个实例⽅方法,与alloc对应,⽤用于回收开辟的内存空间