在使用<code>NSLog</code>或者<code>[NSString stringWithFormat:]</code>的过程中要将数字转为字符(格式化输出)的时候,我们常用%d,%ld,%f等格式字符,但是这样一来在32位和64位不同设备上,特别是当要输出的数字类型是不确定的时候,很容易产生问题。
这时我们可以用<code>NSNumber</code>和<code>%@</code>:
(<code>%@</code>代表一个oc对象, <code>@([变量名])</code>可以把一个数字转换为NSNumber)
NSInteger integerValue = -1;
NSUInteger uintegerValue = 2;
CGFloat floatValue = 3.5;
double doubleValue = 4.5;
NSLog(@"NSInteger = %@", @(integerValue));
NSLog(@"NSUInteger = %@", @(uintegerValue));
NSLog(@"CGFloat = %@", @(floatValue));
NSLog(@"double = %@", @(doubleValue));
输出结果:
NSInteger = -1
NSUInteger = 2
CGFloat = 3.5
double = 4.5
这样一来就不会有警告,也不会出错了。
参考文献:
苹果官方文档《String Programming Guide》:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html
网友评论