ios内存管理
刚开始学的时候没有真正理解,现在突然想写点东西了
以前写代码都是依葫芦画瓢,别人写什么样子自己就照着写,比如说
@interface Counter : A{
NSString *a;
}
@property (nonatomic, retain) Nsstring*a;
@end
然后不管程序中用没用到 我都会在
-(void)delloc{
[a release];
[super delloc];
}
其实现在看来是有问题的,因为在写property (nonatomic, retain) NSArry*a后系统没默认帮做上这个操作
-(void)setObjA:(NSString *)aa
{
If(a!= aa)
{
[a release];
a= aa;
[a retain]; //对象的retain count 加1
}
}
明显的,在retain的setter中,变量retain了一次,那么,所以在程序中使用
self.a = aa;
只写了这么一句,a 仍然需要release,才能保证对象的retain count 是正确的。但是如果你的代码
a = aa;
只写了这么一句,那么这里只是进行了一次浅复制,对象的retain count 并没有增加,因此这样写的话,你不需要在后面release a 。