内存管理黄金法则:
1)如果对一个对象使用了alloc ,[mutable ]copy,retain 那你就必须使用对应的release或者autorelease释放
2)给全局对象赋值的时候需要将此对象retain
3)重写dealloc ,在dealloc中对全局的对象都release
4)在程序中使用来自Foundation,UIKit,AppKit 框架中的类时,需要先创建一个自动释放池,因为来自这些框架的类会自动创建并返回自动释放的对象
- (void)setDog :(Dog *)dog
{
if(_dog != dog) //先判断
{ [_dog release];
_dog = [dog retain];
}
}
- (void)dealloc //重写dealloc方法 release所有全局的对象
{
[_dog release];
[super dealloc];
}
//自定义初始化方法
- (id)initWithDog:(Dog *)dog
{
self = [super init];
if (self)
{
_dog = [dog retain]; //拿到狗对象的所有权
}
return self;
}
//先创建一个对象然后将它作为方法调用的结果返回 应该给对象发送autorelease消息
- (Dog *)getInfo{
Dog *dog = [[Dog alloc]init];
NSLog(@"%@",dog);
return [dog autorelease] ;
}