Objective-C:从集合中检索的对象

时间:2011-06-16 18:41:02

标签: objective-c object collections casting nsarray

在Objective-C中,从集合中检索对象时(例如,使用-[NSArray objectAtIndex:]),何时需要将对象强制转换为其原始类,以及为什么?

似乎在调用方法时,不需要强制转换,但是在使用属性点表示法时。但我不明白为什么会这样。

1 个答案:

答案 0 :(得分:4)

由于一个简单的事情,你需要在使用点表示法时强制转换它:否则编译器将其视为struct objc_object { Class isa; } *,它没有得到你想要的成员。 (事实上​​,要访问isa,您还需要-> - 符号。)

这基本上是因为-[NSArray objectAtIndex:]返回id,其定义为:

typedef struct objc_object { Class isa; } *id;

你需要强制转换才能使用点表示法,但是你不需要将它强制转发给它。我的方法:总是强制转换。 :)