iOS中的主线程是否收到内存警告?
当我的应用程序响应内存警告时,我看到了一些不寻常的行为——数据主要不同步 如果我的应用程序收到内存警告,警告是否会将控制传递给主线程 如果没有,我假设如果内存警告将释放主线程上可能正在使用的数据,我必须进行一些数据保护 我很确定-didReceiveMemoryWarning只会在主线程上调用 无论如何,您可以这样做来确保这一点,而不会出现潜在的死锁:iOS中的主线程是否收到内存警告?,ios,cocoa-touch,Ios,Cocoa Touch,当我的应用程序响应内存警告时,我看到了一些不寻常的行为——数据主要不同步 如果我的应用程序收到内存警告,警告是否会将控制传递给主线程 如果没有,我假设如果内存警告将释放主线程上可能正在使用的数据,我必须进行一些数据保护 我很确定-didReceiveMemoryWarning只会在主线程上调用 无论如何,您可以这样做来确保这一点,而不会出现潜在的死锁: void invokeBlockOnMainThread(dispatch_block_t block) { if([NSThread i
void invokeBlockOnMainThread(dispatch_block_t block) {
if([NSThread isMainThread]) {
block();
return;
}
dispatch_sync(dispatch_get_main_queue(), block);
}
在-didReceiveMemoryWarning内调用此函数,传入一个包含您需要执行的所有操作的块,然后确保在传入块中执行代码时处于主线程上。鉴于建议使用-didReceiveMemoryWarning方法来丢弃视图,鉴于视图只能从主线程进行操作,可以安全地假设该方法只能在主线程上调用 如果您发现情况并非如此,或者您希望在文档中明确说明这一点,请