更新方法中的对象类引用?

时间:2014-02-03 14:54:56

标签: ios objective-c

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

一种方法将这些对象中的随机对象简称为:

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

问题是,我想通过它的子类来引用UIView,具体取决于它是什么。

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

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

但是如何在UIView中改变该对象的类引用(?) 到它的实际子类?

2 个答案:

答案 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;
}

您可以检查该视图是否属于该类,并将其强制转换。