objective-c - 将 NSNumber 分配给 NSString

标签 objective-c

 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/

相关文章:

ios - AFNetworking 2.0 和背景图片

iOS Objective-C : convert utf-16 to base64

ios - 只允许一个 UIAlertController View 从可见 View 上的类中呈现

ios - AVCaptureSession 与 UIImagePickerController 速度

objective-c - UISearchBar 搜索包含文本、副文本和图像的表格行

objective-c - UIImageView isAnimating 是否在 4.0 SDK 中中断?

ios - NSOperationQueue : currentQueue/new?之间的区别

ios - Objective C - 返回子类的实例而不知道它是什么

ios - 为什么 iPhone 7 和 iPhone 7 Plus 屏幕截图会发送与 RGB 色彩空间图像不兼容的 alpha?

iphone - 在许多不同的数组中查找特定对象