Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 可以创建一个类';s ivar是其超类的一个实例吗?_Objective C - Fatal编程技术网

Objective c 可以创建一个类';s ivar是其超类的一个实例吗?

Objective c 可以创建一个类';s ivar是其超类的一个实例吗?,objective-c,Objective C,如果ClassB是ClassA的一个子类,如果ClassB的一个ivar是ClassA的一个实例,可以吗?对不起,如果这是一个愚蠢的问题。我只是觉得很困惑ClassB是如何继承ClassA的,但它可能拥有它的一个实例 那太好了。一个类甚至可以有自己类型的ivar 假设你有一辆旅行车,想做一辆火车的模型。您的货车类可能会有2辆IVAR类型的货车。一个指向火车上的下一辆货车,另一个指向上一辆货车 然后,您可以实现一个wago的PassengerWagon子类,它将从它的超类继承wago ivars。

如果
ClassB
ClassA
的一个子类,如果
ClassB的一个
ivar是
ClassA
的一个实例,可以吗?对不起,如果这是一个愚蠢的问题。我只是觉得很困惑
ClassB
是如何继承
ClassA
的,但它可能拥有它的一个实例

那太好了。一个类甚至可以有自己类型的ivar

假设你有一辆旅行车,想做一辆火车的模型。您的货车类可能会有2辆IVAR类型的货车。一个指向火车上的下一辆货车,另一个指向上一辆货车


然后,您可以实现一个wago的PassengerWagon子类,它将从它的超类继承wago ivars。需要明确的是:如果您只想跟踪PassengerWagon实例的邻居,那么您也只能在PassengerWagon中定义IVAR(货车类型),而不是超类,但是这些邻居可以是任何货车类型。

是的,这很好。基本上,在任何类中都可以有任何类型的IVAR。

假设每个对象都有NSObject作为超类。在某些语言中,如果您试图使a的子类成为a的成员,它可能会变得有点敏感。Dunno关于Objective-C——根本不需要尝试。@HotLicks是的,但我们不是在谈论其他语言,只是Obj-C。如果您使用
@class SomeSubclass
转发声明子类,那么该子类必须是完全有效的(但仍然不是良好的实践)。是的,我希望它在Obj-C中工作,因为它是duck类型的,并且不试图维护类继承映射。只是从未尝试过。(即使它没有正式工作,你也可以用一个超类指针来伪造它——这几乎适用于任何语言。)@HotLicks非常好的观点!幸运的是,Objective-C设计得很好,很少需要寻找黑客解决方案:)