我应该使用 NSNumber 而不是基本的 C 数字类型吗?

发布于 2024-10-18 01:00:57 字数 434 浏览 7 评论 0原文

使用 Foundation Framework 中的 NSNumber 代替基本 C 类型(int、float、double)有什么好处?

使用 NSNumber:

NSNumber *intNumber;
NSInteger myInt;
intNumber = [NSNumber numberWithInteger: 100];
myInt = [intNumber integerValue];

使用纯 C:

int intNumber;
intNumber = 100;

使用 C 似乎更容易、更经济。

我知道 NSNumber 是一个对象(或类?)类型,但为什么我要使用它们而不是简单的 C 变量?我什么时候应该使用它们?

What is the benefit of using NSNumber from Foundation Framework instead of basic C types (int, float, double)?

Using NSNumber:

NSNumber *intNumber;
NSInteger myInt;
intNumber = [NSNumber numberWithInteger: 100];
myInt = [intNumber integerValue];

Using pure C:

int intNumber;
intNumber = 100;

Seems a lot easier and economic to use C.

I know NSNumber is an object (or class?) type, but why would I use them instead simple C variables? When should I use them?

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

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

发布评论

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

评论(3

苏别ゝ 2024-10-25 01:00:57

NSNumber 的目的只是将原始类型装箱到对象(指针类型)中,因此您可以在需要指针类型值工作的情况下使用它们。

一个常见的示例:如果您想在 Core Data 实体中保留数值,则必须使用 NSNumber

您可以而且应该使用基元进行计算(除非使用小数,在这种情况下您使用 NSDecimalNSDecimalNumber)。

The purpose of NSNumber is simply to box primitive types in objects (pointer types), so you can use them in situations that require pointer-type values to work.

One common example: you have to use NSNumber if you want to persist numeric values in Core Data entities.

You can and should use primitives for calculations (unless with decimals, in which case you use NSDecimal or NSDecimalNumber).

jJeQQOZ5 2024-10-25 01:00:57

如果您需要将数字作为对象传递,请使用NSNumber

如果需要进行算术运算,可以使用intdouble。如果您不想担心 32/64 位问题,可以使用 NSInteger 和 CGFloat。

If you need to pass a number as an object, use NSNumber.

If you need to make arithmetic operations, you can use int and double. If you don't want to bother with 32/64 bit issues, you can use NSInteger and CGFloat.

固执像三岁 2024-10-25 01:00:57

因为在处理某些对象的参数传递时,使用基本数据类型是行不通的。此外,NSNumber 类还为您提供了将值快速转换为其他数据类型的选项。

Because with dealing with passing of parameters with certain objects, using a basic data type will not work. Also, the NSNumber class gives you options for converting values into other datatypes quickly.

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