应用程序卡在带有 Xcode 11 测试版的 iOS 13 测试版模拟器上,但在带有 Xcode 10 的 iOS 13 测试版模拟器上运行良好

Posted

技术标签:

【中文标题】应用程序卡在带有 Xcode 11 测试版的 iOS 13 测试版模拟器上,但在带有 Xcode 10 的 iOS 13 测试版模拟器上运行良好【英文标题】:App stuck on iOS 13 beta simulator with Xcode 11 beta but working fine on iOS 13 beta simulator with Xcode 10 【发布时间】:2019-08-26 08:59:57 【问题描述】:

我面临一个非常奇怪的问题。在应用程序启动时,我调用 API 来获取令牌。它在 ios 12 之前运行良好。但是,在 iOS 13 beta 版本上,没有调用完成闭包,应用程序继续积累内存并最终崩溃。

但是,当我从 Xcode 10 到 iOS 13 beta 模拟器运行相同的代码时,它运行良好。

我正在附上我调用API的代码,请帮助我。

这是我没有得到完成处理程序并且控制权刚刚丢失的函数。

@discardableResult
static func requestObject<T: Decodable>(urlRequest: URLRequest, sessionManager: SessionManager? = nil, keyPath: String? = nil, decoder: JSONDecoder = JSONDecoder(), queue: DispatchQueue? = nil, completion: @escaping (NetworkResult<T>) -> Void) -> URLSessionTask? 

    let request = self.request(urlRequest: urlRequest, sessionManager: sessionManager)
        .responseDecodableObject(decoder: decoder, keyPath: keyPath, queue: queue)  (response: DataResponse<T>) in

            switch response.result 
            case .failure(let error):    completion(NetworkResult.failure(error))
            case .success(let value):    completion(NetworkResult.success(value))
            
    

    return request.task

这就是我调用的请求函数。

static func request(urlRequest: URLRequest, sessionManager: SessionManager?) -> DataRequest 

    guard let sessionManager = sessionManager else 
        return Alamofire.request(urlRequest)
            .validate  (request, response, data) -> Request.ValidationResult in
                return self.validation(request: request, response: response, data: data)
        
    

    return sessionManager.request(urlRequest)
        .validate  (request, response, data) -> Request.ValidationResult in
            return self.validation(request: request, response: response, data: data)
    

【问题讨论】:

@nebiros 是的,我已经修好了。实际上我的主线程每次都举行。它会导致所有其他线程的持有。但我认为这可能是 Xcode 或网络调用等问题。当应用挂起时,暂停应用并检查主线程在哪里。 感谢您的回答,我们已经看到了一个主线程问题,但是在 Xcode 10 中出现了核心运动,不知道为什么 Xcode 11 没有捕捉到这个问题 @nebiros 是的,我遇到了同样的问题。它在带有 Xcode 10 的 iOS 13 模拟器上运行良好,但在 Xcode 11 上运行良好。奇怪 【参考方案1】:

终于找到了解决办法:)

实际上我的主线程被阻塞了,它阻塞了所有其他线程,并且应用程序继续积累内存。我使用的是第三方标签,这导致了这个问题。

这是导致该问题的代码。

override func layoutSubviews() 
    super.layoutSubviews()
    self.frame = self.frame.insetBy(dx: 0, dy: -3)

在 iOS 12 之前,它运行良好。但它在 iOS 13 中占据了主线程,并导致应用程序在收集太多内存后崩溃。

我从 layoutsubviews 中删除了框架更新代码,一切正常 :)

【讨论】:

【参考方案2】:

这听起来像是 iOS 13 测试版的错误。你可以在这里举报https://developer.apple.com/bug-reporting/

【讨论】:

以上是关于应用程序卡在带有 Xcode 11 测试版的 iOS 13 测试版模拟器上,但在带有 Xcode 10 的 iOS 13 测试版模拟器上运行良好的主要内容,如果未能解决你的问题,请参考以下文章

Ember Cordova 应用程序卡在 iOS 11.3 的加载屏幕上

Xcode 11 卡在存档上

IOS-Xcode 11打包上传时,一直卡在Authenticating with the App Store…

IOS-Xcode 11打包上传时,一直卡在Authenticating with the App Store…

Crashlytics iOS Beta 卡在 Fabric 应用程序中

带有xcode9的ios11中没有显示导航图标?