我有一个数组,其中包含指向UIView
子类的不同对象的指针。
一种方法将这些对象中的随机对象简称为:
- (void)specialMethod(UIView*)target_UIView{
…
}
问题是,我想通过它的子类来引用UIView
,具体取决于它是什么。
我可以通过以下方式获取UIView
子类名称:
NSString *theClassName = [NSString stringWithFormat:@"%@", [target_UIView class]];
但是如何在UIView中改变该对象的类引用(?) 到它的实际子类?
答案 0 :(得分:2)
最好的方法是使用多态属性:
您创建了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];
…
}
答案 1 :(得分:0)
我不确定你在问什么,但这种方法可以解决你的问题:
if ([target_UIView isMemberOfClass:[MySubClassView class]])
{
MySubClassView *mySubclassView = (MySubClassView *)target_UIView;
}
您可以检查该视图是否属于该类,并将其强制转换。