首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将64位支持添加到iOS应用程序时使用INT值的首选方法

将64位支持添加到iOS应用程序时使用INT值的首选方法
EN

Stack Overflow用户
提问于 2015-10-22 21:12:41
回答 1查看 39关注 0票数 2

我正在更新一个不支持64位架构的旧iOS应用程序。

从苹果的转换过程看,它似乎将“整型和无符号整型分别转换为NSInteger和NSUInteger”。然而,当我这样做的时候,我会在格式化的过程中遇到很多到long的类型转换,如下所示。我会担心在32位架构上的性能,因为所有的转换都是long。

代码语言:javascript
复制
//old
NSInteger myIntValue = 5;
[NSString stringWithFormat:@"%d", myIntValue];

//new
NSInteger myIntValue = 5;
[NSString stringWithFormat:@"%ld", (long)myIntValue];

另一种方法是用int替换我的NSInteger用法,这样它们仍然是4字节值,这样在格式化myIntValue时就不需要强制转换为long。

代码语言:javascript
复制
//old
NSInteger myIntValue = 5;
[NSString stringWithFormat:@"%d", myIntValue];

//new
int myIntValue = 5;
[NSString stringWithFormat:@"%d", myIntValue];

假设从NSInteger更改为int的项将保证适合4字节的int,出于任何特殊原因,是否应避免使用后一种方法?

EN

回答 1

Stack Overflow用户

发布于 2015-10-22 21:31:04

在为32位64位编译时,这些强制转换是格式化字符串的唯一方法,因为另一种方法更糟糕(在我看来):

代码语言:javascript
复制
#if __LP64__
    [NSString stringWithFormat:@"%ld", myIntValue];
#else
    [NSString stringWithFormat:@"%d", myIntValue];
#endif

对于强制转换,没有什么重要的性能问题需要担心,因为这只是一个堆栈上有多少空间的问题,也许还有一些符号扩展。一些次要的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33281906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档