0

我遇到了与 UILabel 相关的奇怪崩溃,但我使用的崩溃报告服务并没有给我太多帮助来定位它。我不知道哪个控制器和哪个 UILabel 导致它。我唯一的帮助如下:

-[__NSCFString set]: unrecognized selector sent to instance 0x1e0958d0
0    CoreFoundation     __exceptionPreprocess + 162
1    libobjc.A.dylib    objc_exception_throw + 30
2    CoreFoundation     -[NSObject(NSObject) doesNotRecognizeSelector:] + 170
3    CoreFoundation     ___forwarding___ + 392
4    CoreFoundation     _CF_forwarding_prep_0 + 24
5    UIKit              -[UILabel _legacy_drawTextInRect:baselineCalculationOnly:] + 2632
6    UIKit              -[UILabel _drawTextInRect:baselineCalculationOnly:] + 166
7    UIKit              -[UILabel drawTextInRect:] + 450
8    UIKit              -[UILabel drawRect:] + 72
9    UIKit              -[UIView(CALayerDelegate) drawLayer:inContext:] + 364
10   QuartzCore         -[CALayer drawInContext:] + 112
11   QuartzCore         CABackingStoreUpdate_ + 1808
12   QuartzCore         CA::Layer::display_() + 980
13   QuartzCore         CA::Layer::display_if_needed(CA::Transaction*) + 202
14   QuartzCore         CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 24
15   QuartzCore         CA::Context::commit_transaction(CA::Transaction*) + 238
16   QuartzCore         CA::Transaction::commit() + 316
17   QuartzCore         CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 60
18   CoreFoundation     __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 20
19   CoreFoundation     __CFRunLoopDoObservers + 276
20   CoreFoundation     __CFRunLoopRun + 742
21   CoreFoundation     CFRunLoopRunSpecific + 356
22   CoreFoundation     CFRunLoopRunInMode + 104
23   GraphicsServices   GSEventRunModal + 74
24   UIKit              UIApplicationMain + 1120
25   App                main.m line 14
26   App                start + 40

有什么我能找到解决办法的吗?提前谢谢!

4

3 回答 3

3

即使这是一个老问题,对于遇到类似问题的任何人:

如果您在 UILabel 中使用属性文本,请检查您设置的属性值类型。例如:

NSString* s = @"str";
NSMutableAttributedString* as = [[NSMutableAttributedString alloc] initWithString:s];
[as addAttribute:NSForegroundColorAttributeName value:someObjectThatsNotAUIColor range:NSMakeRange(0, s.length)];

将导致 UILabel [__NSCFString set]: unrecognized selector sent to instance crash。

于 2015-07-29T08:27:21.117 回答
1

您可以尝试将其放在 .h 中:

@interface NSString (extended)
- (void)set;
@end

这在 .m 中:

@implementation NSString (extended)
- (void)set
{
    NSLog(@"[NSString set] ??? impossible !!!");
}
@end

然后在这个方法上设置一个断点。

于 2012-11-12T15:01:20.920 回答
0

在您的项目中搜索“set]”然后您可能已经找到它,因为这是一个非常不典型的方法名称。如果这没有帮助,请使用 NSLog 将所有标签地址打印到控制台,以找出导致此问题的标签。喜欢

for (UIView *sub in self.subviews)
    if ([sub kindOfClass:[UILabel class]]) NSLog(@"%p", sub);

(代码未经测试,必要时更正拼写)

于 2012-11-12T14:52:22.897 回答