NSString *string = [NSNumber numberWithInt:2];
int var = [string intValue];
var 将为 2。 所以为什么?我明白,这是关于动态类型的,但是幕后是什么?
最佳答案
此代码示例中没有进行转换:[string intValue]
是 NSNumber
提供的常规 Objective C 方法,用于检索存储在其中的整数值。将对象分配给 NSString 指针的事实不会改变任何内容:内部的对象仍然是 NSNumber。您不会崩溃,因为 Objective C 是一种动态类型语言。它允许您分配错误类型的对象,但是如果您尝试在 string
对象上调用 NSString
的方法,您将会崩溃:
NSString *string = [NSNumber numberWithInt:2];
int var = [string intValue]; // OK
BOOL isTwo = [string isEqualToString:@"2"]; // Crash
关于objective-c - 将 NSNumber 分配给 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16550181/