如何将 NSInteger 转换为 int?

发布于 2024-08-11 07:24:01 字数 211 浏览 4 评论 0原文

例如,当将 value 消息传递给 NSInteger 实例(如

[a value])时,它会导致 EXC_BAD_ACCESS。

那么如何将 NSInteger 转换为 int 呢?

如果相关的话只有小数字<使用了32个。

For example when passing a value message to an NSInteger instance like so

[a value] it causes an EXC_BAD_ACCESS.

So how to convert an NSInteger to int?

If it's relevant only small numbers < 32 are used.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

苏璃陌 2024-08-18 07:24:01

哒哒:

NSInteger myInteger = 42;
int myInt = (int) myInteger;

NSInteger 只不过是一个 32/64 位 int。 (它将根据您运行的操作系统/平台使用适当的大小)

Ta da:

NSInteger myInteger = 42;
int myInt = (int) myInteger;

NSInteger is nothing more than a 32/64 bit int. (it will use the appropriate size based on what OS/platform you're running)

未蓝澄海的烟 2024-08-18 07:24:01

如果您想内联执行此操作,只需将 NSUIntegerNSInteger 转换为 int

int i = -1;
NSUInteger row = 100;
i > row // true, since the signed int is implicitly converted to an unsigned int
i > (int)row // false

If you want to do this inline, just cast the NSUInteger or NSInteger to an int:

int i = -1;
NSUInteger row = 100;
i > row // true, since the signed int is implicitly converted to an unsigned int
i > (int)row // false
迎风吟唱 2024-08-18 07:24:01

我不确定在什么情况下需要将 NSInteger 转换为 int

NSInteger 只是一个 typedef:

NSInteger
用于描述整数,无论​​您是为 32 位系统还是 64 位系统构建。

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger;
#else
typedef int NSInteger;
#endif

您可以在任何使用 int 的地方使用 NSInteger ,而无需转换它。

I'm not sure about the circumstances where you need to convert an NSInteger to an int.

NSInteger is just a typedef:

NSInteger
Used to describe an integer independently of whether you are building for a 32-bit or a 64-bit system.

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger;
#else
typedef int NSInteger;
#endif

You can use NSInteger any place you use an int without converting it.

白色秋天 2024-08-18 07:24:01

常用于 UIsegmentedControl,在 64 位而不是 32 位编译时会出现“错误”,不将其传递给新变量的简单方法是使用此提示,添加 (int):

[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];

而不是 :

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];

Commonly used in UIsegmentedControl, "error" appear when compiling in 64bits instead of 32bits, easy way for not pass it to a new variable is to use this tips, add (int):

[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];

instead of :

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文