代码:
NSNumber* i = [[NSNumber alloc] initWithFloat:1.0];
NSNumber* j = [[NSNumber alloc] init];
j= [i mutableCopy];
运行j= [i mutableCopy]
时,程序崩溃。
我知道NSNumber
是一种不可变的类型;当您使用copy
时,i
和j
将具有相同的内存地址(参考副本)。但是当您使用mutableCopy
时,它应该执行值复制。为什么mutableCopy
上无法使用NSNumber
?
答案 0 :(得分:7)
NSNumber
类不符合NSMutableCopying
协议,因此它不响应mutableCopy
选择器。 Cocoa中没有像NSMutableNumber
这样的类。 NSNumber
对象是单个C数据项的简单容器,可将其与需要Objective-C对象的API一起使用。如果您需要执行任何数字突变,可以使用标量C类型。