为什么 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
时,i
和 j
将具有相同的内存地址(参考副本)。但是当你使用 mutableCopy
时,它应该执行值复制。为什么 mutableCopy
不能用在 NSNumber
上?
NSNumber
class不符合NSMutableCopying
协议,所以不响应mutableCopy
选择器。 Cocoa中没有NSMutableNumber
这样的class。 NSNumber
对象是单个 C 数据项的简单容器,以便将其与需要 Objective-C 对象的 API 一起使用。如果您需要执行任何数字突变,您可以使用标量 C 类型。
代码:
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
上?
NSNumber
class不符合NSMutableCopying
协议,所以不响应mutableCopy
选择器。 Cocoa中没有NSMutableNumber
这样的class。 NSNumber
对象是单个 C 数据项的简单容器,以便将其与需要 Objective-C 对象的 API 一起使用。如果您需要执行任何数字突变,您可以使用标量 C 类型。