为什么我尝试在isKindOfClass
对象上使用id
。有时,它出错了并显示EXC_BAD_ACCESS
以下是代码(当用户点击Growl通知时将调用):
- (void)growlNotificationWasClicked:(id)fromUserClick {
NSDictionary *data = (NSDictionary *)fromUserClick;
id object = [[data objectForKey:@"someKey"] unsignedLongValue];
if([object isKindOfClass:[NSNumber class]]) {
NSLog(@"test");
}
}
以下是检查员在车祸中的表现:
请帮我解决这个问题。谢谢。
答案 0 :(得分:1)
isKindOfClass
是NSObject
的一种方法。当您使用unsignedLongValue
时,它会返回unsigned long
而unsigned long
不是对象。
这就是你崩溃的原因。
P / S:当你写[[data objectForKey:@"someKey"] unsignedLongValue]
时,它总是返回一个数字。您不需要检查返回的值是否为数字。只需使用它。
unsigned long number = [[data objectForKey:@"someKey"] unsignedLongValue];