应用卡在 iOS 13 beta 模拟器和 Xcode 11 beta 但在 iOS 13 beta 模拟器和 Xcode 10 上工作正常
App stuck on iOS 13 beta simulator with Xcode 11 beta but working fine on iOS 13 beta simulator with Xcode 10
我遇到了一个很奇怪的问题。在应用程序开始时,我调用 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)
}
}
这听起来像是 iOS 13 测试版错误。您可以在这里举报 https://developer.apple.com/bug-reporting/
找到解决方案,终于:)
实际上我的主线程被阻塞了,它阻塞了所有其他线程,应用程序继续积累内存。我使用的是第三方标签,导致了这个问题。
这是导致该问题的代码。
override func layoutSubviews() {
super.layoutSubviews()
self.frame = self.frame.insetBy(dx: 0, dy: -3)
}
直到 iOS 12,它工作正常。但它在 iOS 13 中占用了主线程,导致应用程序在收集过多内存后崩溃。
我从布局子视图中删除了框架更新代码,一切正常:)
我遇到了一个很奇怪的问题。在应用程序开始时,我调用 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)
}
}
这听起来像是 iOS 13 测试版错误。您可以在这里举报 https://developer.apple.com/bug-reporting/
找到解决方案,终于:)
实际上我的主线程被阻塞了,它阻塞了所有其他线程,应用程序继续积累内存。我使用的是第三方标签,导致了这个问题。
这是导致该问题的代码。
override func layoutSubviews() {
super.layoutSubviews()
self.frame = self.frame.insetBy(dx: 0, dy: -3)
}
直到 iOS 12,它工作正常。但它在 iOS 13 中占用了主线程,导致应用程序在收集过多内存后崩溃。
我从布局子视图中删除了框架更新代码,一切正常:)