objective-c - 利用 %d 输出 NSString 类型数据, 其结果依据是什么?

浏览:36日期:2023-12-10

问题描述

NSString *numberString = @'1024';NSLog(@'%d', numberString);

如上代码,输出结果感觉上是一个很随机数字57835920。所以比较好奇这个数字具体是怎么得出的呢?

故事背景:在练习数组数据排序的时候,为了偷懒直接把 NSString 类型的数据直接用<、>做了比较,最初只是自己模拟了几个数字作为数据源,但是后来数据量大了发现有排序有错误,Debug 过程中发现是由于没有把 NSString 类型数据转换成 NSInteger 类型导致。最终调用 .integer 属性解决此偷懒导致的 BUG。但是正式因此 BUG 才会好奇,直接用 %d 输出 NSString 类型数据,结果是依据什么返回的?

问题解答

回答1:

numberString的类型不是NSString, 是NSString*, 是一个指针, 也就是一个整数

这个整数的含义是..那个NSString对象在内存中的地址

回答2:

野指针 一个很大的数

相关文章: