gpt4 book ai didi

objective-c - 什么时候在变量定义中使用 *(在 Objective-C 中)?

转载 作者:行者123 更新时间:2023-12-03 16:24:08 25 4
gpt4 key购买 nike

我仍然对 Objective-C 感到困惑。有时你会像这样声明一个变量:

NSRect rect;

有时像这样:

NSValue *value;

我从来不知道什么时候添加*,到目前为止我总是在苹果的文档中查找它。我知道区别在于值和指向对象的指针之间。

但是对于何时声明值和何时声明指针有什么硬性规定吗?有什么可以让你更容易记住的东西吗?或者我必须知道(例如查找)哪个 NSSomething 是一个值,哪个是一个对象?

谢谢!

最佳答案

简短:是的,您必须记住每种类型的这一点,但过了一会儿就会很自然。

不过,这并不是“哪个 NSSomething 是值,哪个是对象”的问题(更准确地说:哪个 NSSomething 是标量数据类型或结构,哪个是类)。即使您不会看到或使用如下声明:

NSRect *pointerToARect;
NSInteger *pointerToAnInteger;

很多时候,它们有时是完全有效且必要的。因此,对于标量(像 NSInteger 这样的简单数据类型)和结构体,这两种变体都是有效的,您使用哪一种取决于您是否需要指针或实际的东西。

对于对象,所有变量必须始终是指针,因为对象只能在堆上分配,而不能在堆栈上分配。因此,与上面的示例不同的是:

NSValue myValue; // invalid!

不正确并且无法编译。

关于objective-c - 什么时候在变量定义中使用 *(在 Objective-C 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2241780/

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