今天学习内存管理的内容,比较抽象,应用的不是很多,但还是要理解,那现在我就来回顾一下,学习的内容吧!
一、id:任意对象
self:调用自身类
super:引用父类本身的属性
二、内存管理
ARC:自动内存管理
MRC:手动内存管理
1、内存计数机制:内存计数表示当前对象被引用的次数,如果引用次数为0 则对象会从内存中释放掉
retain会对内存计数+1
release会对内存计数-1
2、retain(strong)assign(weak)copy对set方法的影响:
retain:两件事1.把原来的释放 2把新的retain+1——————现在使用的是strong
assign:直接赋值 --------系统默认的weak(可以不用写)
copy:调用copy并赋值
//声明属性时,要添加(关键字)
//对象
@property(nonatomic, strong) NSMutableArray *myArray;
//基本数据类型
@property(nonatomic)int x;
3、dealloc方法 当对象内存计数为0时会释放内存 释放之前会调用此方法 在arc中用来验证对象没有有释放掉
//当内存计数器为0的时候 会释放到对象 释放之前会调用此方法
例:- (void)dealloc
{
//需要把所有的全局变量release
//[_myArray release];
}
三、协议(即规则):只有遵循协议的才可以执行某种方法
1、创建类在类的.h文件
@protocol ManDelegate <NSObject>
//@optional //非必须
//@required //必须的
-(void)play;
@end
@interfaceMan : NSObject
-(void)playWithObject:(id<ManDelegate>)obj;
@end
2、在类的.M文件
-(void)playWithObject:(id<ManDelegate>)obj{
NSLog(@"大男人在玩");
[obj play];
}
3、在ViewController.M引入类的头文件
//声明对象
Man * m =[[Man alloc]init];
Boy*b =[[Boy alloc]init];
Girl *g =[[Girl alloc]init];
//使用方法
[m playWithObject:b];
[m playWithObject:g];
好啦,今天就总结到这里,大家一起共勉,加油吧!