extension UIApplication {
override open var next: UIResponder? {
print("next")
return super.next
}
}
Приведенный выше код был выполнен до iOS 13.4 , а "next
" напечатан до application(_:, didFinishLaunchingWithOptions:)
метода
Вкл. iOS 13.4 и последний iOS 13.4.1 , консоль не выводит next
. Если я сломаю точку останова в строке print()
, точка останова не будет выполнена
Это привело к сбою некоторых из моего предыдущего кода, например:
import UIKit
public extension UIApplication {
private static let runOnce: Void = {
NothingToSeeHere.harmlessFunction()
}()
override var next: UIResponder? {
// Called before applicationDidFinishLaunching
UIApplication.runOnce
return super.next
}
}
public protocol SelfAware: class {
static func awake()
}
public class NothingToSeeHere {
public static func harmlessFunction() {
let typeCount = Int(objc_getClassList(nil, 0))
let types = UnsafeMutablePointer<AnyClass>.allocate(capacity: typeCount)
let autoreleasingTypes = AutoreleasingUnsafeMutablePointer<AnyClass>(types)
objc_getClassList(autoreleasingTypes, Int32(typeCount))
for index in 0 ..< typeCount {
(types[index] as? SelfAware.Type)?.awake()
}
types.deallocate()
}
}
Почему это происходит ? Это ошибка в iOS 13.4? Все еще особенность? Я не нашел ничего связанного с примечаниями к выпуску для iOS 13.4 ...
Позвольте мне перечислить ситуацию, которую я тестировал:
- 13.2 iPhone,
next
выполнение метода и до application(_:, didFinishLaunchingWithOptions:)
. - 13.3 Симулятор,
next
выполнение метода и до application(_:, didFinishLaunchingWithOptions:)
. - 13.4 Симулятор,
next
метод не выполняется. - 13.4 iPhone,
next
метод не выполняется. - 13.4.1 iPhone,
next
метод не выполняется.