gpt4 book ai didi

objective-c - 有人可以向我解释 (NSString *) 对 Obj-C 意味着什么吗?

转载 作者:行者123 更新时间:2023-12-02 08:58:48 24 4
gpt4 key购买 nike

我刚开始使用Objective-C,我想了解以下代码行的含义,因为我在objective-c中随处可见,但我并没有100%完全理解它:

- (id)initWithName:(NSString *)name;

我知道上面这行是一个传递一个参数的实例方法,我不明白的是 (NSString *)name。

另一个例子是:
-(NSString *)name;

或者
person.height = (NSObject *)something;

谢谢你的帮助

最佳答案

在这一行:

- (id)initWithName:(NSString *)name;
(NSString *)只是参数的类型 - 一个字符串对象,它是 Cocoa 中的 NSString 类。在 Objective-C 中,你总是处理对象引用(指针),所以“*”表示参数是对 NSString 的引用。目的。

在这个例子中:
person.height = (NSObject *)something;

正在发生一些不同的事情: (NSObject *)再次指定类型,但这次是“类型转换”操作——这意味着获取“某物”对象引用(可能是 NSStringNSNumber 或...)并处理它作为对 NSObject 的引用.

更新 -
当谈论 Objective-C 对象时(与 int 或 float 等原始类型相反),一切最终都是一个指针,因此转换操作意味着“将此指针设为 X 并将其视为指向 Y” .例如,如果您有一个包含泛型 NSArray 的容器类(如 NSObject ) s,但您知道对象实际上是字符串,您可能会说:
NSString *myString = (NSString *)[myArray objectAtIndex:0];

这意味着“从数组中检索第一个对象,将其视为字符串”。

强制转换实际上并没有转换值,它只是对编译器说“嘿,我知道我在这里将 X 分配给 Y,所以不要给我警告”。

关于objective-c - 有人可以向我解释 (NSString *) 对 Obj-C 意味着什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2905304/

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