标签:使用 sp strong on log cti bs 代码 ad
cocoa中的内存管理机制 引用计数
示范代码:
Person *person =[[Person alloc]init];
NSLog(@"Person 1:%ld",[person retainCount]);
[person retain];
NSLog(@"Person 2:%ld",[person retainCount]);
[person retain];
NSLog(@"Person 3:%ld",[person retainCount]);
[person release];
NSLog(@"Person release1:%ld",[person retainCount]);
[person release];
NSLog(@"Person release2:%ld",[person retainCount]);
[person release];
对象所有权的基本概念
释放对象引用方法
//设置器
-(void) setCPU:(CPU *) cpu
{
if (_cpu!=cpu) {//对象不等于当前对象
[_cpu release];//释放旧对象
_cpu=[cpu retain];//保留当前对象
}
}
初始化方法
//字符串
-(id) initWithName:(NSString*)name{
self=[super init];
if(self){
_name=[name copy];}
return self;
}
//对象
-(id) initWithEngine:(id*)name{
self=[super init];
if(self){
_engine=[engine retain];}
return self;
}
并且在dealloch方法中释放对象
-(void)dealloc
{
[_name release]
[engine release]
[super dealloc]
}
点语法内存管理
赋值
assign 直接赋值
retain 保留对象
copy 拷贝对象
读写性
readwrite 默认生成 getter setter
readonly 生成getter方法
原子性
atomic多线程保护
noatomic不存在多线程保护,性能好写。
区别
标签:使用 sp strong on log cti bs 代码 ad
原文地址:http://www.cnblogs.com/suxun/p/4121911.html