1.头文件中声明的对象要在- (void) dealloc方法中release掉.
原因:创建这个对象时已经为这个对象分配了空间.
2.release对象不可以通过[NSString stringwithString]创建的对象.但是可以用于NSString *str=@"";
3.传递对象时注意的release 问题:主要有两种情况.self.a= 和a=两种情况.对于前者可使用autorelease ;对于后者在传值之前不能release
4.放到数组array或者字典dictionary中的对象可将release的所有权交给数组,或是字典.
原因:把对象放到数组中会使该对象的retaincount增加1,如无特殊需求可在添加到数组之后,将该对象release 掉或者设置autorelease.
注意:view 的addSubview也是将对象放到数组中,所以可将其release掉把release的权利交由数组.
5.autorelease实在赋值后或者是将第一相应者传递之后调用的,如果设置了autorelease对象在nsautoreleasepool中,则该对象随着[pool release]一起释放.UITableviewCell 可设置为autorelease.例如navigation 栈中popviewController,dismissModleviewController等.
6.UINavigationController执行push时会产生push的viewController的retaincount的增加,在push执行之后又会回复.UIAlertview执行show方法时候,也会产生retaincount增加,所以在[alertview release] 之后还可以相应事件.
7.copy NSString 或者NSArray都继承NSCoping接口.所以在执行copy时会分配另一块空间.
要使普通的对象也执行copy方法,可让该对象的类继承NSCoping接口.然后实现- (id) copywithZone:(nszone *) zone 方法,即可.