我有一个数组,其中包含指向UIView子类的不同对象的指针。

一种方法将这些对象中的任意一个简单地引用为:

- (void)specialMethod(UIView*)target_UIView{
   …
}


问题是,我想根据其子类引用UIView

我可以通过以下方式获取UIView子类名称:

NSString *theClassName = [NSString stringWithFormat:@"%@", [target_UIView class]];


但是如何在方法中从UIView更改此对象的类引用(?)
到其实际的子类?

最佳答案

最好的方法是使用多态属性:

您创建UIView类自定义并将其添加为特殊方法:

@interface MyUIView : UIView

- (void)specialMethod;

@end


然后,您的子视图会扩展MyUIView而不是UIView

@interface MyViewA : MyUIView

@end


您在每个子类中覆盖specialMethod

@implementation MyViewA

- (void)specialMethod
{
    // Do something
}

@end


最后,在您的方法中:

- (void)specialMethod(MyUIView*)target_UIView{
   [target_UIView specialMethod];
   …
}

10-04 21:14