[iOS]web defaultsDidChangeホットスポット


Foundation


[NSUserDefaults(NSUserDefaults_NSURLExtras) _web_defaultsDidChange]



次の致命的なエラーが発生しました.iOS 13で発生した問題なのか、iOS 14.8.1で発生したのか、iOS 14の特定バージョンで発生した問題なのか、他バージョンで発生した問題なのか、間違えたのか分からないという.しかし,複数の文書では,この問題は自動完了文字認証で発生しているため,同様の方法で修正した.
NSStringをStringに変換したときの問題らしい!
import Foundation

extension NSString {
  class func swizzleReplacingCharacters() {
    let originalMethod = class_getInstanceMethod(NSString.self, #selector(NSString.replacingCharacters(in:with:)))
    
    let swizzledMethod = class_getInstanceMethod(NSString.self, #selector(NSString.swizzledReplacingCharacters(in:with:)))
    
    guard let original = originalMethod, let swizzled = swizzledMethod else {
      return
    }
    
    method_exchangeImplementations(original, swizzled)
  }
  
  @objc func swizzledReplacingCharacters(in range: NSRange, with replacement: String) -> String {
    return self.swizzledReplacingCharacters(in: range, with: replacement)
  }
}
// AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    if UIDevice.current.systemVersion.hasPrefix("13") || UIDevice.current.systemVersion.hasPrefix("14") {
      NSString.swizzleReplacingCharacters()
    }
}
ソース
https://darth-vader.tistory.com/1
https://joonhyoung.github.io/swift/swizzleReplacingCharacters/