我有一个数组,其中包含指向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];
…
}