繁体   English   中英

iOS的主线程上是否收到内存警告?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM