gpt4 book ai didi

iphone - objective c 类为什么返回 -(id) 而不是它自己的类

转载 作者:太空狗 更新时间:2023-10-30 03:40:15 24 4
gpt4 key购买 nike

我来自 C# 背景,你初始化一个类然后像这样返回它自己

public class MyClass{
public int Id;
public string Name;
}

MyClass classInstance = new MyClass();
:
:

我知道 c# 与 objective c 不同,但我正在尝试找到一种方法来轻松理解 objective c 的工作原理以简化转换。并找出最佳实践。

无论如何,我的问题是为什么你必须创建一个方法并返回一个“id”而不是返回它自己的类型?像这样:

- (id)initWithID:(NSInteger)id name:(NSString *)name
{
self = [self init];
if (self) {
self.ID = id;
self.name = name;
}
return self;
}

谢谢你的时间

最佳答案

由于继承,您在初始化方法中返回类型为 id 的对象。

这样想:您有一个 Foo 类的对象。它有一个名为 initWithWidgets 的初始化方法。现在,您创建了 Foo 的子类并将其命名为 Bar。根据继承规则,它可以访问 initWithWidgets 方法。如果 initWithWidgets 的返回类型是 Foo,那么您的 Bar 类将无法使用它来初始化自己!返回类型将与您尝试实例化的对象不同。因此,如果您使用 id,您就是在说“该对象的返回类型可以是任何类型”并且您对子类是安全的!

关于iphone - objective c 类为什么返回 -(id) 而不是它自己的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369012/

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