使用viewDidUnload

时间:2010-05-11 10:41:04

标签: iphone

viewDidUnload和didReceiveMemoryWarning方法的用途是什么?

当他们真正被召唤时?

dealloc,viewDidUnload和didrecievedmemorywarning有什么区别?

4 个答案:

答案 0 :(得分:1)

viewDidUnload应该撤消viewDidLoad的作用,就像dealloc应该释放init创建的任何资源一样。所以:

-(id)init {
    if (self == [super init]) {
      foo = [[Foo alloc] init];
    }
    return self;
}

-(void)dealloc {
  [foo release];
  [super dealloc];
}

-(void)viewDidLoad {
    [super viewDidLoad];
    bar = [[Bar alloc] init];
}

-(void)viewDidUnload {
  [bar release];
  [super viewDidUnload];
}

didReceiveMemoryWarning就在那里你可以释放任何不必要的内存。也许您缓存图像。对于一个快速的用户界面,这很好,但是当内存紧张时,你可以释放内存,你的应用程序的性能会优雅地降低。

答案 1 :(得分:1)

viewDidUnload:当viewcontroller收到低内存警告时调用它。

dealloc:释放object / viewController时调用它。

didRecieveMemorywarning:当控制器收到低内存警告时也会调用。

那么,什么是viewDidUnload和didrecieveemoryWarning之间的区别?

viewDidUnload是您需要清理与UI相关的内容的地方,例如,商店。

didRecieveMemoryWarning是一个需要清理其他持有内存且不经常使用的对象的地方。

答案 2 :(得分:0)

Apple's documentation开始是一个好主意,因为这个主题有很多。

答案 3 :(得分:0)

当UIViewController子类卸载它的视图时,会调用

viewDidUnload。然后释放视图,并断开所有IBOutlet。弹出viewController时,或者当它收到内存警告时,通常会触发该方法。

当操作系统发送内存警告时,会调用

didRecieveMemorywarning。当设备内存不足时会发生这种情况。您应该尝试尽可能多地发布数据,以释放内存。缓存,此刻不需要的数据等等。

如果你没有释放内存,你的应用程序将在某个时刻被杀死以释放操作系统的内存。

<\ n> Dealloc在实例被解除分配时被调用。