2016-10-20 25 views
0

私はこの例外に直面しており、問題を把握できません。iOSアプリがクラッシュする[NSNull hasColorGlyphsInRange:attributes:]

例外ブレークポイントとシンボリックブレークポイントを追加しようとしましたが、それ以上の有用なデータは表示されませんでした。あなたは

を使用する場合

2016-10-20 17:32:58.615 <AppName>[15655:3398242] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull hasColorGlyphsInRange:attributes:]: unrecognized selector sent to instance 0x10b1acfb0' 
    *** First throw call stack: 
    (
     0 CoreFoundation      0x000000010aeef34b __exceptionPreprocess + 171 
     1 libobjc.A.dylib      0x000000010f90221e objc_exception_throw + 48 
     2 CoreFoundation      0x000000010af5ef34 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 
     3 CoreFoundation      0x000000010ae74c15 ___forwarding___ + 1013 
     4 CoreFoundation      0x000000010ae74798 _CF_forwarding_prep_0 + 120 
     5 UIKit        0x000000010d9c66c1 -[UILabel _determineContentsFormat] + 1475 
     6 UIKit        0x000000010d9c6f9d -[UILabel _evaluateContentsFormat] + 33 
     7 UIKit        0x000000010d801923 -[UIView(CALayerDelegate) layerWillDraw:] + 65 
     8 QuartzCore       0x000000010d2c0b26 _ZN2CA5Layer8display_Ev + 146 
     9 QuartzCore       0x000000010d2b5596 _ZN2CA5Layer17display_if_neededEPNS_11TransactionE + 294 
     10 QuartzCore       0x000000010d2b5629 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 35 
     11 QuartzCore       0x000000010d24362c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 280 
     12 QuartzCore       0x000000010d270713 _ZN2CA11Transaction6commitEv + 475 
     13 QuartzCore       0x000000010d271083 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 113 
     14 CoreFoundation      0x000000010ae93e17 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 
     15 CoreFoundation      0x000000010ae93d87 __CFRunLoopDoObservers + 391 
     16 CoreFoundation      0x000000010ae78b9e __CFRunLoopRun + 1198 
     17 CoreFoundation      0x000000010ae78494 CFRunLoopRunSpecific + 420 
     18 GraphicsServices     0x0000000111c6fa6f GSEventRunModal + 161 
     19 UIKit        0x000000010d73df34 UIApplicationMain + 159 
     20 AppName        0x0000000109998c73 main + 1187 
     21 libdyld.dylib      0x00000001103f368d start + 1 
    ) 
    libc++abi.dylib: terminating with uncaught exception of type NSException 
+0

私のコードでは、その関数(hasColorGlyphsInRange)を使用していないので、内部的にどこに何が起こっているのかを調べる方法です。 – Falanso

+0

おそらくNSNullオブジェクトをラベルのテキストとして設定したようです。 – jtbandes

答えて

0

あなたはこの機能hasColorGlyphsInRangeを使用している

if ([self respondsToSelector:@selector(hasColorGlyphsInRange:)]) { 
      //code 
    } 
+0

このメソッドは、テキスト(CoreText?)をレンダリングするための内部メソッドのようです。私は 'UILabel'のようなものではなく、オブジェクトが' NSNull'クラスのオブジェクトであると考えています。 – Larme

+0

'NSMutableAttributedString'は間違って – memedina

+0

を使っています。これはUILabelでは内部的に使われていますが、 hasColorGlyphsInRangeの使用 – Falanso

1
を試してみてください。これは例外でバックトレースに何もmain.hリターンに

をクラッシュです

' - [NSNull hasColorGlyphsInRange:attributes:]:インスタンスに送信された認識できないセレクタ0x10b1acfb0'

これは、NSNullオブジェクトを使用したことを意味します。コールスタックから、多分NSStringまたはNSAttributedStringとして使用されるNSNull。だからあなたはそれを使用する前にチェックする必要があります。

if (str != [NSNull null]) { 
    label.text = str 
} 
0

エラーメッセージを読んで理解する必要があります。

誰かか何かがNSNullのインスタンスにhasColorGlyphsInRangeというメッセージを送信しようとしていたと言われます。たとえそれが起こるべきではないので受け入れが難しいとしても、それはエラーメッセージであり、それは起こったことです。

これで、NSNullインスタンスを持ってはいけない場所に置きました。 hasColorGlyphsInRangeはどこにも書かれていないので、iOSやmacOSの内部にあるものです。しかし、それはテキストに関するものと非常によく似ており、コールスタックにはUILabelメソッドがあります。また、呼び出しスタックにlayerWillDraw:があるので、UILabelを描画しようとするものです。

UILabelsは直ちに再描画されませんが、システムは何かを再描画することを決定します。したがって、最も可能性の高いことは、UILabelのテキストをNSNullオブジェクトに設定したことです。

NSNullオブジェクトはどこから来たのですか?ベットはJSONを処理していて、文字列を取得していてヌルオブジェクトをチェックしていないと仮定しているため、UILabelのテキストをNSNullインスタンスに設定しています。

関連する問題