为什么mutableCopy不能在NSNumber上使用?

时间:2016-02-15 21:09:55

标签: objective-c cocoa cocoa-touch nsnumber

代码:

NSNumber* i = [[NSNumber alloc] initWithFloat:1.0];
NSNumber* j = [[NSNumber alloc] init];

j= [i mutableCopy];

运行j= [i mutableCopy]时,程序崩溃。

我知道NSNumber是一种不可变的类型;当您使用copy时,ij将具有相同的内存地址(参考副本)。但是当您使用mutableCopy时,它应该执行值复制。为什么mutableCopy上无法使用NSNumber

1 个答案:

答案 0 :(得分:7)

NSNumber类不符合NSMutableCopying协议,因此它不响应mutableCopy选择器。 Cocoa中没有像NSMutableNumber这样的类。 NSNumber对象是单个C数据项的简单容器,可将其与需要Objective-C对象的API一起使用。如果您需要执行任何数字突变,可以使用标量C类型。