gpt4 book ai didi

objective-c - 为什么我必须定义指针的类?

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

我正在通过 BigNerdRanch 的《Aaron Hillegass 的 Objective-C 编程》一书学习 Objc,有件事一直让我困惑。

我知道编译器需要知道我正在谈论什么类型的变量,因此我必须在赋值之前声明 var 类型。

int myNum = 10;

好吧。但是当涉及到 ObjC 类时,如果我必须在分配和初始化指针时在 = 之后声明它,那么声明指针类型的原因是什么?

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

显然*dateFormatter对象是NSDateFormatter的一个实例,我把它写在分配中。为什么我也必须在一开始就声明它?因为如果我尝试做类似的事情

NSString *timeZone = [NSTimeZone systemTimeZone];

Xcode 明确警告我“不兼容的指针类型使用“NSTimeZone *”类型的表达式初始化“NSString *”。

我感觉我失去了一些东西。抱歉,如果这是一个愚蠢的问题,请尝试学习。

最佳答案

这里真正的问题是“为什么我必须定义指针的正确类?”...

答案是:您可能还想在其他上下文中使用变量。如果您直接发送消息[NSTimeZone systemTimeZone],那么编译器也许能够推断出类型,但是如果您向变量发送消息怎么办?如果你选择较弱的类型

id tz = [NSTimeZone systemTimeZone];

如果您使用 tz(其中预期为 NSTimeZone *),那么编译器检查错误的机会比您将其声明为 时要少得多NSTimeZone *tz.

关于objective-c - 为什么我必须定义指针的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19179537/

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