将NSArray元素分配给适当对象的最佳方法是什么?

pan*_*ama 0 objective-c nsarray ios

如果我在NSArray中有以下3个类的对象,那么将数组元素分配给适当对象的最佳方法是什么?

@interface Simple : NSObject 
@interface Intermediate : Simple 
@interface Advanced : Simple
Run Code Online (Sandbox Code Playgroud)

我想遍历NSArray,如果数组的第二个元素是Intermediate,第五个元素是Advanced,我想分别将它们分配给Intermediate和Advanced的变量.这允许我调用派生类中未在基类中定义的方法.

让我知道,如果有一个更好的解决方案,而不是让NSArray包含不同的对象(我仍然有兴趣知道原始问题的答案)!

Gab*_*lla 5

您可以检查该对象的类别,同时使用两种循环isMemberOfClass:或isKindOfClass:(更多有关分歧这里).

这就是说,如果-我怀疑-这三个类有着共同的逻辑,你为什么不只是做Simple,Intermediate和Advance一个共同的祖先的子类,叫做-说- Difficulty,然后用变量的Difficulty类型?

然后,Difficulty无论子类如何,您都可以将数组中的任何对象分配给变量.