我现在正面临由NSNumber的objCType引起的情况,即numberWithInt。
当我从NSUserDefault检索它,并检查它的类型时。已触发EXC_BAD_ACCESS。

这是代码:

 NSNumber* number = [uD objectForKey:@"some_key"];
 NSLog(@"Data Type %@",[number objCType]);//This Line fired EXC_BAD_ACCESS


uD代表在代码另一部分初始化的UserDefault对象。
从numberWithLong创建NSNumber时不存在此问题

最佳答案

objCType返回一个C字符串,因此您需要在格式字符串中使用%s而不是%@。像这样:

NSLog(@"Data Type %s", [number objCType]);


请注意,您可能想通过执行以下操作来防止nilnumber值:

NSLog(@"Data Type %s", [number objCType] ?: "");

10-08 05:50