gpt4 book ai didi

ios - 使用#define 变量创建 NSNumber

转载 作者:可可西里 更新时间:2023-11-01 05:35:54 25 4
gpt4 key购买 nike

根据我对 NSNumber 的理解,如果您创建具有特定数据类型的 NSNumber,则需要访问具有相同数据类型的变量。例如

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,该 NSNumber 稍后可用于检索 NSInteger?

最佳答案

您对 NSNumber 的理解不正确。您可以使用它支持的任何类型创建一个 NSNumber,然后您可以使用任何支持的类型访问器。两者不需要相同。

// Perfectly valid
NSNumber *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;

顺便说一句 - 为什么要发布这个问题?为什么不先试试呢?

关于ios - 使用#define 变量创建 NSNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19761402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com