[英]Is a memory warning received on the main thread in iOS?
当我的应用程序响应内存警告时,我看到了一些异常行为-数据主要不同步。
如果我的应用收到内存警告,警告是否会将控制权传递给主线程?
如果没有,我假设如果内存警告将释放可能在主线程上使用的数据,则我必须做一些数据保护。
鉴于-didReceiveMemoryWarning
方法的推荐用法是抛弃视图,并且鉴于仅应从主线程操作视图,因此可以安全地假定该方法仅在主线程上被调用。
如果您发现不是这种情况,或者希望在文档中明确说明,请提出增强请求 。
我很确定-didReceiveMemoryWarning
将仅在主线程上被调用。
无论如何,这是可以确保没有(可能)死锁的操作:
void invokeBlockOnMainThread(dispatch_block_t block) {
if([NSThread isMainThread]) {
block();
return;
}
dispatch_sync(dispatch_get_main_queue(), block);
}
在-didReceiveMemoryWarning
调用此函数,将需要完成的所有操作传入一个块,然后在执行传入块中的代码时确保您位于主线程上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.