gpt4 book ai didi

objective-c - Objective C——初始化子类对象的继承变量

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:39 24 4
gpt4 key购买 nike

我有一个 MyClass 类。我在这里夸张了,但假设 MyClass 有 1000 个实例变量。然后我创建一个名为 MySubClass 的子类,其中包含 MyClass 拥有的所有实例变量,再加上一个。

问题:给定一个 MyClass 类的对象 MyObj,有没有一种简单的方法可以创建一个对应的 MySubClass 类的对象 MyDerivedObj,使得 MyDerivedObj 的实例变量与 MyObj 的实例变量相同?我所说的“相同”是指强烈相同,即如果 MyObj 的实例变量是指向对象的指针,则 MyDerivedObj 的相应实例变量应指向相同的内存。

最佳答案

本质上,一个对象的每个实例都会有一个不同的id;堆中不同的地址和不同的分配点。

因此,A 的实例变量和 B 的实例变量总是位于不同的位置

现在,没有理由不能将 A 和 B 的实例变量包装到一个单独分配的结构中。这样,A 和 B 都可以有一个实例变量,它是一个指向充满值的结构的单个副本的指针。

在设置所有 1,000 个 ivar 方面,这也取决于您要设置它们的内容。如果为 0,则它们将在对象实例化时自动设置为该方式。如果你想在一组模板化的值中 bcopy(),我建议你使用一个指向结构的指针并进行单独的分配。如果不对最终会咬你的布局做出假设,就无法批量设置对象的实例变量。

关于objective-c - Objective C——初始化子类对象的继承变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2029240/

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