【发布时间】:2018-11-29 15:36:07
【问题描述】:
我有一个用 Objective-C 制作的应用程序。这个应用程序总是正常工作。昨天,我的 Xcode 忽略了我创建的任何新内容,因此我将其更新为 Xcode 10.1 (10B61)。无论如何,我正在编辑另一个应用程序,而不是下一个。
在那之后,App Store 上更新了一个版本的应用程序(我在 2 天前发送了它),晚上 18 点,我的老板打电话给我,告诉我应用程序崩溃了。
今天,我确认应用程序没有崩溃,它正在死机。当任何这些事情发生时,它就会冻结:
- 打开或关闭键盘
- 打开或关闭任何活动
- 使用 AFNetworking 框架发出请求
我尝试对本月的 init 进行 git checkout,但仍然没有成功。所以我对过去一个月(10 月 9 日)的 init 进行了结帐,但它仍然处于冻结状态。但是这些版本的应用程序可以正常运行。
我尝试调试它,直到在程序集上,我可以修复 AFNetworking 有史以来第一次更改框架的代码。当应用程序尝试设置请求的标头时,有一个 dispatch_sync 冻结了应用程序,我可以将其更改为 dispatch_async 并修复 1/3 的问题,请求仍在异步处理。线路:./Pods/AFNetworking/Serialization/AFURLRequestSerialization.m:306
- (NSDictionary *)HTTPRequestHeaders {
NSDictionary __block *value;
dispatch_sync(self.requestHeaderModificationQueue, ^{
value = [NSDictionary dictionaryWithDictionary:self.mutableHTTPRequestHeaders];
});
return value;
}
现在我的老板告诉我,这两个应用程序都冻结了。而且我没有更新提到的第一个应用程序中的任何内容。这些应用来自同一个项目,它们的工作方式类似于优步。
有人知道发生了什么吗?
====EDIT0====
目前我们注意到该应用程序可以在另一台计算机上构建,并且与以前一样。因此,在我的 Mac 中构建的应用程序正在冻结,问题不在于代码、某些库、更新或其他什么。可能是我的电脑,我们将尝试使用另一台mac来构建和发送应用程序。
如果它解决了问题,我会将解决方案放在这里并与 Apple 支持联系。
【问题讨论】:
-
我建议你创建一个MCVE。创建一个空白项目,添加 AFNetworking,看看是否可以显示问题。可能你不会,所以你必须开始添加代码模式,按照你在应用程序中的方式,直到你能表现出问题。 (另一种方法是复制您的项目,开始剔除与问题无关的所有内容,并继续重复此过程,直到您无法再表现出问题为止。)但是这个问题现在太宽泛了。
-
如果你从同一个队列中调用
dispatch_sync,那么你已经创建了一个死锁。 -
听起来你需要一台新的 Mac
标签: ios objective-c afnetworking freeze