iOS应用程序崩溃[NSNull hasColorGlyphsInRange:attributes:]

时间:2016-10-20 14:07:01

标签: ios objective-c

我正面临这个例外,我无法弄清楚这个问题。

我尝试添加异常断点和符号断点,但它没有显示任何更多有用的数据。它在main.h上崩溃,在回溯中没有任何内容

这是例外:

    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

3 个答案:

答案 0 :(得分:1)

  

&#39; - [NSNull hasColorGlyphsInRange:attributes:]:无法识别的选择器发送到实例0x10b1acfb0&#39;

这意味着您已经使用了NSNull对象。从调用堆栈,可能是NSNull用作NSString或NSAttributedString。因此,您需要在使用前进行检查。

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

答案 1 :(得分:0)

如果您使用

,是否使用此功能services.AddSingleton<IAuthorizationHandler, TestHandler>();

尝试

hasColorGlyphsInRange

答案 2 :(得分:0)

您需要能够阅读并理解错误消息。

您被告知有人或某事试图将消息hasColorGlyphsInRange发送到NSNull的实例。即使很难接受,因为这不应该发生,那就是错误信息以及发生了什么。

所以你已经把一个NSNull实例放在了你不应该的地方。 hasColorGlyphsInRange似乎没有记录在任何地方,因此它是iOS或macOS内部的东西。但它看起来像文本的东西,并且调用堆栈上有UILabel方法。并且在调用堆栈上有一个layerWillDraw:所以它试图绘制一个UILabel。

UILabels不会立即重绘,但是当系统决定重绘任何内容时。所以最有可能的是你已经将UILabel的文本设置为NSNull对象。

NSNull对象来自哪里?投注是您正在处理JSON,并且您假设您正在获取字符串并且不检查空对象,这就是您将某些UILabel的文本设置为NSNull实例的原因。