NSNumber *myIntNumber = [NSNumber numberWithInt:1];int myInt = [myIntNumber intValue];NSNumber *myNSIntegerNumber = [NSNumber numberWithInteger:1];NSInteger myInteger = [myIntNumber integerValue];
如果使用#define变量创建NSNumber:
#define MY_define 6
这是否意味着我无法做到以下几点
NSNumber *myNSIntegerNumber = [NSNumber numberWithInteger:MY_define];NSInteger myInteger = [myIntNumber integerValue];
因为MY_define不是NSInteger?
我知道上面的代码可以在32位应用程序中运行,但我正在努力确保它可以在64位应用程序上运行,这对于这些事情也更加挑剔.当然,做正确的事情永远不会伤害.
如果我不能做到这一点,我应该尝试不同地定义MY_define,以便我可以使用它来创建一个NSNumber,以后可以用来检索NSInteger?
解决方法 您对NSNumber的理解不正确.您可以使用它支持的任何类型创建NSNumber,然后可以使用任何支持的类型访问器.两者不需要相同.// Perfectly valIDNSNumber *number = [NSNumber numberWithfloat:3.14];int val = [number intValue]; // results in 3
您对#define的使用是完全有效的.预编译器只是将您的代码转换为:
NSNumber *myNSIntegerNumber = [NSNumber numberWithInteger:6];
请记住,#define只是在编译代码之前完成的简单复制和粘贴(至少在这种简单形式中).
你甚至可以使用现代语法:
NSNumber *number = @MY_define;
变为:
NSNumber *number = @6;
BTW – 为什么发布这个问题?为什么不先试试呢?
总结以上是内存溢出为你收集整理的ios – 使用#define变量创建NSNumber全部内容,希望文章能够帮你解决ios – 使用#define变量创建NSNumber所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)