码迷,mamicode.com
首页 > 其他好文 > 详细

使用literal语法格式化字符串

时间:2015-05-02 18:05:20      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

支持arm64之后,格式化字符串的时候会遇到一些问题,主要与NSInteger的定义有关:

 

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedef long NSInteger;

typedef unsigned long NSUInteger;

#else

typedef int NSInteger;

typedef unsigned int NSUInteger;

#endif

 

也就是说在64位下,对NSInteger格式化字符串的时候,需要使用%ld, 而在32位的情况下,需要用%d.

一种解决方法是进行强制类型转换。

 另外一种呢,是利用literal语法转成NSNumber*之后进行字符串的格式化。

例如:

 

NSInteger value = 6;

NSLog(@"%@", @(value));

NSString* test = [NSString stringWithFormat:@"%@", @(value)];

 

实际上就是转为NSNumber对象然后进行格式化,缺点当然就是多了一次装箱的过程啦, 不过代码写起来就简单方便多了,尤其是在资源文件中给出字符串的时候不需要苦恼究竟该用%d还是%ld.

使用literal语法格式化字符串

标签:

原文地址:http://www.cnblogs.com/agger0207/p/4472158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!