【问题标题】:How do I debug freezing issue in my iOS app如何在我的 iOS 应用程序中调试冻结问题
【发布时间】:2018-11-29 15:36:07
【问题描述】:

我有一个用 Objective-C 制作的应用程序。这个应用程序总是正常工作。昨天,我的 Xcode 忽略了我创建的任何新内容,因此我将其更新为 Xcode 10.1 (10B61)。无论如何,我正在编辑另一个应用程序,而不是下一个。

在那之后,App Store 上更新了一个版本的应用程序(我在 2 天前发送了它),晚上 18 点,我的老板打电话给我,告诉我应用程序崩溃了。

今天,我确认应用程序没有崩溃,它正在死机。当任何这些事情发生时,它就会冻结:

  1. 打开或关闭键盘
  2. 打开或关闭任何活动
  3. 使用 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


【解决方案1】:

问题是在我的 Mac 中构建的每个 iOS 应用程序都开始在 dispatch_sync 函数中随机冻结。我将尝试格式化我的电脑或购买一台新电脑。

这确实没有意义,但解决了问题。

【讨论】:

    猜你喜欢
    • 2021-05-13
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2011-03-17
    • 2018-05-23
    • 2016-07-29
    • 1970-01-01
    相关资源
    最近更新 更多