如图:
这个值是怎么得出来的?
注:这个值还会变。。。
普通类型,像int、bool、double、枚举等,都是要封装成对象放到容器(NSArray、NSDictionary)里,对象和普通类型是不能加个(int)这个强转的,这时这时把对象当指针来处理,也就是得到指针的值,也是指针指向内存的地址。NSString转int用[a intValue]。
你取出的firstObject是一个NSString对象,(int)aString,相当于你把aString的地址转换为int类型,所以值不是你想要的而且会变。
如果要从NSString对象中取出数值,可以用[aString intValue]的方式。
你的array.firstObject
是NSString
类型的,即字符串。字符串是存在常量区的,用(int)array.firstObject
取得的是地址,并非值。正确的做法是使用intValue
,即[array.firstObject intValue]
即可得到正确的值。
2 回答1.1k 阅读
1 回答1.2k 阅读✓ 已解决
1 回答2.8k 阅读
1 回答1.4k 阅读
1.7k 阅读
1 回答959 阅读
1 回答797 阅读
array.firstObject是@"1", 是一个NSStrng对象, (int)NSString对象的意思是取
对象地址
进行强转为int由于NSSring是存在内存的数据区, 所以以下代码打印结果是一样的