Input-mask-ios: 12.2開発者ベータ2のクラッシュ-initWithCoderエラー

作成日 2019年02月15日  ·  11コメント  ·  ソース: RedMadRobot/input-mask-ios

前提条件

  • [X]次のすべてを実行した場合は、この行の角かっこで囲まれたX挿入します。

バグを説明する

入力マスクを利用してTextFieldを使用するViewControllerを使用した後、アプリがクラッシュすることに気付きました。 その正確なページが前日に機能し、ストーリーボードのビューコントローラーまたはUIに変更を加えていなかったため、これは奇妙でした-私が行った唯一の変更は、環境内でした:xCode 10 Beta2を使用してアプリをビルドしましたiOS 12.2 Developer beta 2のベータ版を実行しているiPhoneでアプリを実行/テストできるようにする現在のページからすべてのコントロールを1つずつ取得し、いつ実行されるかを確認して、新しいViewControllerを構築することにしました。ブレーク-InputMaskデリゲートオブジェクトを追加した瞬間にのみブレークしました。

動作を再現する手順:

InputMaskテキストフィールドが設定されたページがあります-iOS12.2開発者ベータ2用のアプリをビルドします(xCode 10ベータ2を使用)

期待される動作
入力マスク機能

実際の動作
アプリのクラッシュ:エラーが発生しました:
Terminating app due to uncaught exception 'NSGenericException', reason: 'This coder requires that replaced objects be returned from initWithCoder:'

これが問題の核心ですが、残りのエラー呼び出しスタックは次の場所にあります。

*** First throw call stack: ( 0 CoreFoundation 0x0000000108ca072b __exceptionPreprocess + 331 1 libobjc.A.dylib 0x000000010768eac5 objc_exception_throw + 48 2 CoreFoundation 0x0000000108ca0585 +[NSException raise:format:] + 197 3 UIFoundation 0x000000010f47e89c UINibDecoderDecodeObjectForValue + 827 4 UIFoundation 0x000000010f47eaf9 UINibDecoderDecodeObjectForValue + 1432 5 UIFoundation 0x000000010f47e554 -[UINibDecoder decodeObjectForKey:] + 251 6 UIKitCore 0x0000000111825e90 -[UIViewController initWithCoder:] + 1021 7 DumaPay Consumer iOS 0x00000001055bde66 $s20DumaPay_Consumer_iOS25TestAddCardViewControllerC5coderACSgSo7NSCoderC_tcfc + 2214 8 DumaPay Consumer iOS 0x00000001055bdf2f $s20DumaPay_Consumer_iOS25TestAddCardViewControllerC5coderACSgSo7NSCoderC_tcfcTo + 47 9 UIKitCore 0x0000000111aaae89 -[UIClassSwapper initWithCoder:] + 246 10 UIFoundation 0x000000010f47e852 UINibDecoderDecodeObjectForValue + 753 11 UIFoundation 0x000000010f47e554 -[UINibDecoder decodeObjectForKey:] + 251 12 UIKitCore 0x0000000111aaf4d1 -[UIRuntimeConnection initWithCoder:] + 178 13 UIFoundation 0x000000010f47e852 UINibDecoderDecodeObjectForValue + 753 14 UIFoundation 0x000000010f47eaf9 UINibDecoderDecodeObjectForValue + 1432 15 UIFoundation 0x000000010f47e554 -[UINibDecoder decodeObjectForKey:] + 251 16 UIKitCore 0x0000000111aacd81 -[UINib instantiateWithOwner:options:] + 1216 17 UIKitCore 0x0000000111fc5290 -[UIStoryboard instantiateViewControllerWithIdentifier:] + 181 18 DumaPay Consumer iOS 0x0000000105623ea9 $s20DumaPay_Consumer_iOS28AddCardScannerViewControllerC010goToManualfE004cardG6ResultySo0b15CardsRecognizerN0CSg_tF + 249 19 DumaPay Consumer iOS 0x0000000105623d2e $s20DumaPay_Consumer_iOS28AddCardScannerViewControllerC02oneF15ManuallyClicked6senderyyp_tF + 62 20 DumaPay Consumer iOS 0x0000000105623d8c $s20DumaPay_Consumer_iOS28AddCardScannerViewControllerC02oneF15ManuallyClicked6senderyyp_tFTo + 76 21 UIKitCore 0x0000000111e2e834 -[UIApplication sendAction:to:from:forEvent:] + 83 22 UIKitCore 0x00000001118845b5 -[UIControl sendAction:to:forEvent:] + 67 23 UIKitCore 0x00000001118848d2 -[UIControl _sendActionsForEvents:withEvent:] + 450 24 UIKitCore 0x0000000111883888 -[UIControl touchesEnded:withEvent:] + 583 25 UIKitCore 0x0000000111e6751e -[UIWindow _sendTouchesForEvent:] + 2547 26 UIKitCore 0x0000000111e68c02 -[UIWindow sendEvent:] + 4079 27 UIKitCore 0x0000000111e47346 -[UIApplication sendEvent:] + 356 28 UIKitCore 0x0000000111f178c3 __dispatchPreprocessedEventFromEventQueue + 3232 29 UIKitCore 0x0000000111f1a1e9 __handleEventQueueInternal + 5911 30 CoreFoundation 0x0000000108c07c11 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 31 CoreFoundation 0x0000000108c07493 __CFRunLoopDoSources0 + 243 32 CoreFoundation 0x0000000108c01b4f __CFRunLoopRun + 1231 33 CoreFoundation 0x0000000108c01332 CFRunLoopRunSpecific + 626 34 GraphicsServices 0x000000010f1222fe GSEventRunModal + 65 35 UIKitCore 0x0000000111e2d1d2 UIApplicationMain + 140 36 DumaPay Consumer iOS 0x0000000105609bdb main + 75 37 libdyld.dylib 0x000000010a883861 start + 1 38 ??? 0x0000000000000001 0x0 + 1 )

プラットフォーム情報

  • OSバージョン:iOS12.2ベータ2
  • ライブラリバージョン:4.1.0
  • 言語:Swift 4.2
bug

最も参考になるコメント

まだ更新はありませんか?

全てのコメント11件

ねえ@SteynMarnus
ナイスキャッチ! すべてのデバッグ情報をありがとう。

Sampleを最新のXcode-betaで実行してみましたが、同じ結果が得られました。
調べて、調査結果を共有します。

ねえ@SteynMarnus
ナイスキャッチ! すべてのデバッグ情報をありがとう。

Sampleを最新のXcode-betaで実行してみましたが、同じ結果が得られました。
調べて、調査結果を共有します。

問題ありません! ベータ版は少し「ワイルドウェスト」です。 ご覧いただきありがとうございます。

さて、どういうわけか私はそれを逃しました。
ここで、既知の問題2:

Swiftメタデータが占めるサイズを減らすために、Swiftで定義された便利なイニシャライザーは、Objective-Cで定義された指定のイニシャライザーを呼び出している場合にのみ、オブジェクトを事前に割り当てるようになりました。 ほとんどの場合、これはプログラムに影響を与えませんが、便利なイニシャライザーがObjective-Cから呼び出された場合、+ allocからの初期割り当ては、イニシャライザーが呼び出されることなく解放されます。

基本的に、 alloc/initシーケンス依存関係の問題。 _また…_

まあ、これが解決されている間、回避策は置き換えることです

public override convenience init() {
    // Interface Builder support
    self.init(primaryFormat: "")
}

public override init() {
    // Interface Builder support
    self.primaryMaskFormat = ""
    self.autocomplete = true
    self.autocompleteOnFocus = true
    self.rightToLeft = false
    self.affineFormats = []
    self.affinityCalculationStrategy = .wholeString
    self.customNotations = []
    self.onMaskedTextChangedCallback = nil
    super.init()
}

公式スウィフト5のリリースまで、このオープンを維持しましょう。

ああ、かっこいい@taflanidi 、これをMaskedTextViewDelegate.swiftファイルでこれを置き換える必要があると思いますか?

@SteynMarnusあなたに合ったものは何でも。 チームの規模に応じて、独自のフォークを導入するか、独自に作業する場合はポッド自体のそれらの行を置き換えることができます。 あなたは私よりよく知っています。

これらの変更をまだライブラリに入れたく

UPD。 使用しているのはMaskedTextViewDelegateではなく、 MaskedTextFieldDelegateだと思います。 それにもかかわらず、それらの両方が同じ問題を抱えています。

おい
今日、Xcode 10.2がリリースされましたが、このバグはまだ残っています。

@taflanidiあなたの回避策は役に立ちません。

@sashaBizquit私は単に回避策を見つけました
swift required public init?(coder aDecoder: NSCoder) { // Interface Builder support self.primaryMaskFormat = "" self.autocomplete = true self.autocompleteOnFocus = true self.rightToLeft = false self.affineFormats = [] self.affinityCalculationStrategy = .wholeString self.customNotations = [] self.onMaskedTextChangedCallback = nil super.init() } public override init() { // Interface Builder support self.primaryMaskFormat = "" self.autocomplete = true self.autocompleteOnFocus = true self.rightToLeft = false self.affineFormats = [] self.affinityCalculationStrategy = .wholeString self.customNotations = [] self.onMaskedTextChangedCallback = nil super.init() }
この交換後、ビルドをクリーンアップする必要がある場合があります

ねえ@sashaBizquit 、ねえ@ Rik626!
ご報告ありがとうございます。

パッチは今週後半にリリースされますので、しばらくお待ちください。

この問題に関する更新はありますか?

まだ更新はありませんか?

さて、Swift 5に関連する別のバグがありました。すべてが機能していることを確認するために、さらに調査する必要がありました。時間がかかりました。

v。 4.1.1会います。

このページは役に立ちましたか?
0 / 5 - 0 評価