iOS应用轮换导致冻结[关闭]
Posted
技术标签:
【中文标题】iOS应用轮换导致冻结[关闭]【英文标题】:iOS App Rotation Causes Freeze [closed] 【发布时间】:2013-08-20 19:49:20 【问题描述】:我正在编写一个 ios 7 应用程序,当应用程序首次启动时,如果我旋转到横向,然后再回到纵向,应用程序就会冻结/无响应。没有显示错误消息或给出日志。但是,如果我在旋转之前打开/呈现一个新视图,那么当我回到根视图并旋转以尝试重新创建问题时,就没有问题了。根视图位于故事板中制作的导航控制器中。我没有实现监听或处理旋转事件的方法。打开应用程序时发生的唯一事情是发送 REST API 请求并更新 tableview。这个异步调用是否会抛出我的主 UI 线程? (我可以根据需要为根视图发布代码。)用于 API 的代码来自 StackMob.com 的 SDK。
编辑: 我能够使用 iOS 6.1 重新创建
【问题讨论】:
...可能是因为它仍然只是 beta 并且仍在 NDA 下? 抱歉,我应该澄清一下我是在 iOS 6 上重新创建的 您是否有机会从将在另一个线程上运行的异步调用中更新您的 UI?通过更新 UI,我的意思也很简单,比如获取 UILabel 的文本属性值。这或许可以解释这个问题。 我从异步方法的回调中缓慢删除/添加了所有代码。看来 tableview 刷新控件是导致环聊的错误。如果时间允许,我会进一步测试。 【参考方案1】:我能够通过将刷新控件包装在条件检查中来解决该问题。看来我遇到了极端情况。
[self.managedObjectContext executeFetchRequest:purchaseFetch onSuccess:^(NSArray *results)
self.purchases = [NSMutableArray arrayWithArray:results];
[self.tableView reloadData];
[self.HUD hide:YES];
if([self.refreshControl isRefreshing]) //this check solved the freezing problems
[self.refreshControl endRefreshing];
onFailure:^(NSError *error)
[self.HUD hide:YES];
// Log details of the failure
NSLog(@"Error: %@", error);
];
【讨论】:
以上是关于iOS应用轮换导致冻结[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Appium 自动化 iOS 8 应用程序会导致应用程序冻结