为什么 mutableCopy 不能用在 NSNumber 上?

Why can mutableCopy not be used on 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 上?

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