mk1*_*k12 45 iphone uiviewcontroller
注意:此问题已过时 - viewDidUnload已弃用iOS 6.
什么时候自动调用UIViewController的viewDidUnload?是的,我知道,当视图卸载时.但是什么时候会自动发生?我该如何手动完成?谢谢.
Ken*_*ner 42
如果在模拟器中发出内存警告(在菜单中查看),则会为连接到不可见的视图的任何视图控制器调用此警告.
这是因为默认情况下视图控制器已注册为内存警告通知,并且视图控制器将卸载当前未使用的任何视图 - viewDidUnload方法在那里,以便您可以清理其他任何您想要的内容,以节省额外的内存(或者如果你保留了一些IBOutlets来帮助释放内存,否则将被卸载的视图释放).
通常,您在dealloc中释放的任何IBOutlet也应该在此方法中释放(并且引用设置为nil).
joh*_*les 37
除了在模拟器中手动发出内存警告外,您还可以以编程方式发出一个
- (void)_simulateLowMemoryWarning {
// Send out MemoryWarningNotification
[[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationDidReceiveMemoryWarningNotification
object:[UIApplication sharedApplication]];
// Manually call applicationDidReceiveMemoryWarning
[[[UIApplication sharedApplication] delegate] applicationDidReceiveMemoryWarning:[UIApplication sharedApplication]];
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用计时器每5秒发生一次
static NSTimer *gLowMemoryTimer = nil;
- (void)stopLowMemoryTimer {
[gLowMemoryTimer invalidate];
gLowMemoryTimer = nil;
}
- (void)startLowMemoryTimer {
if (gLowMemoryTimer) {
[self _stopLowMemoryTimer];
}
gLowMemoryTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(_simulateLowMemoryWarning) userInfo:nil repeats:YES];
}
Run Code Online (Sandbox Code Playgroud)
Thu*_*ets 10
iOS 6.x及更高版本
我知道这是一个较旧的问题,但我觉得应该提交一个关于viewDidUnloadiOS 6中API 更改的答案,即在iOS 6 viewDidUnload中不再调用(根本不需要)并且已被弃用.
| 归档时间: |
|
| 查看次数: |
32275 次 |
| 最近记录: |