我有一个类,它带有一个NSArray不同对象的实例变量,我知道它们应该从同一个超类继承。我的问题是如何从另一个类(其控制器)访问实例变量和方法,同时确保数组的内容仅包含属于某个类的子类的对象?我尝试实现一个最小的协议,并以类型id(id *)引用数组中的对象,但这不能让我访问数组中类的任何实例变量或方法(正确的是)。
在目标文件中

NSArray* components; // contains subclasses of component


在控制器文件中

subclassofClassObject* object;


是否存在subclassOf函数,宏,typedef ...等或替代方法,因此我可以从控制器的子类引用对象的子类中的组件的子类。即替换SubclassofClass的东西。

最佳答案

我不太了解您的要求,但以下内容可能会有所帮助:

您可以使用isKindOfClass:确定是某个类的实例还是其子类之一。例如,给定一个类MyBaseClass,然后使用强制转换:

id elem = [components objectAtIndex:ix];
if ([elem isKindOfClass:[MyBaseClass class]])
{
   // elem is an instance of MyBaseClass or one of its subclasses so cast is safe
   MyBaseClass *mbc = (MyBaseClass *)elem;
   // now can access methods, properties and public instance variables
   // of MyBaseClass via mbc without warnings
   ...
}

关于objective-c - 访问子类实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8613578/

10-16 10:29