内存引用计数:用于管理对象内存的‘使用次数’ (注意:是对内存的引用计数)
注意: 否指向同一块地址空间
只有当内存的引用计数为0时,内存自动释放
release:仅仅让通过指针让内存的引用计数-1
assign: 基本数据类型
retain:浅拷贝,但是引用计数会+1 @property(retain)<=> -(void)setP:(point*)_p{ p=[_p retain]; }
-(point*)p{ return p; } // 函数原型
copy:指针,深拷贝新创建的对象引用计数+1 原对象引用计数不变
// copy 原型实现
-(id)copyWithZone:(NSZone*)zone{
point* newpoint=[[point allocWithZone:zone] init];
[newpoint setX:x];
[newpoint setY:y];
NSLog(@"调用了拷贝原型");
return newpoint;
}
// circle.m设置p1
-(void)setP1:(point*)_p1{
[p1 release];
p1=[_p1 copy];
}
-(point*)p1{
return p1;
}
copywithzone方法实现的位置:拷贝哪一个对象,就在哪一个对象中实现此方法(如点与圆中,应在点的.m文件中实现)
autorelease
将对象放入自动释放池中,当自动释放池本身生命周期结束的时候,自动释放池向池中所有对象发送release消息,释放池中的对象,达到统一管理与延迟释放的效果。