在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C  iOS/ OC中對象強(qiáng)轉(zhuǎn)到基本數(shù)據(jù)類型的值是怎么來的?

OC中對象強(qiáng)轉(zhuǎn)到基本數(shù)據(jù)類型的值是怎么來的?

如圖:
clipboard.png

這個值是怎么得出來的?
注:這個值還會變。。。

回答
編輯回答
青檸

array.firstObject@"1", 是一個NSStrng對象, (int)NSString對象的意思是取對象地址進(jìn)行強(qiáng)轉(zhuǎn)為int

由于NSSring是存在內(nèi)存的數(shù)據(jù)區(qū), 所以以下代碼打印結(jié)果是一樣的

NSString *str = @"1";
NSArray *arr = @[@"1"];
int a = (int)str;
int b = (int)arr.firstObject;
NSLog(@"a = %zd",a);
NSLog(@"b = %zd",b);
2017年3月22日 08:04
編輯回答
笑忘初

你取出的firstObject是一個NSString對象,(int)aString,相當(dāng)于你把a(bǔ)String的地址轉(zhuǎn)換為int類型,所以值不是你想要的而且會變。
如果要從NSString對象中取出數(shù)值,可以用[aString intValue]的方式。

2017年11月22日 17:36
編輯回答
我不懂

你的array.firstObjectNSString類型的,即字符串。字符串是存在常量區(qū)的,用(int)array.firstObject取得的是地址,并非值。正確的做法是使用intValue,即[array.firstObject intValue]即可得到正確的值。

2017年6月22日 10:34
編輯回答
玩控

普通類型,像int、bool、double、枚舉等,都是要封裝成對象放到容器(NSArray、NSDictionary)里,對象和普通類型是不能加個(int)這個強(qiáng)轉(zhuǎn)的,這時這時把對象當(dāng)指針來處理,也就是得到指針的值,也是指針指向內(nèi)存的地址。NSString轉(zhuǎn)int用[a intValue]。

2018年2月3日 17:59
編輯回答
臭榴蓮

int num = [array.firstObject intValue];

兩者類型不一樣,要轉(zhuǎn)換得用oc的方法,不能直接強(qiáng)轉(zhuǎn)

2017年7月28日 10:40