【发布时间】:2011-03-02 17:23:11
【问题描述】:
如果我有一个名为 Human 的自定义 NSObject,它有一个名为 Male 的子类,并且我有一个名为 Human 的数组,其中包含 Human 对象。在遍历人类数组时,我可以转换对象,例如:
for (Human *human in humans) {
Male *male = (Male *)human;
}
或者最好创建一个方法来initWithMale,例如
for (Human *human in humans) {
Male *male = [[Male alloc] initWithMale:(Male *)human];
}
从内存管理的角度来看,最好的方法是什么,或者没关系?如果是后者,那么我将如何在我的 initWithMale 方法中进行管理?
谢谢
【问题讨论】:
-
除非对象本身是
Male的实例,否则您不能将Human转换为Male。 -
感谢boltClock,它们是男性对象,我也有女性对象。 human.sex 可以是 1 或 0,具体取决于性别。所以我知道它的雄性,但它是投射物体的最佳方式吗?
-
Objective-c 是弱类型的(至少据我所知),强制转换是一件好事,但您无需做任何事情。它基本上只有助于摆脱一些编译器警告。所以是的,我会沿着选角路线走。
标签: iphone objective-c xcode ipad ios