阻止调用子类中的继承方法

时间:2012-05-27 14:19:01

标签: ios objective-c

我有一个UIView的子类,它继承了- initWithFrame:方法。但是,我不希望在我的子类上调用该方法。 有没有办法在我的子类上“删除”该方法?

1 个答案:

答案 0 :(得分:7)

不要实现它,也不要调用[super initWithFrame:aRect]。只需使用_cmd参数调用doesNotRecognizeSelector:

- (id)initWithFrame:(CGRect)aRect
{
    [self doesNotRecognizeSelector:_cmd];
}

如果方法没有返回void,您将收到编译器的警告:

  

控制到达非空函数的末尾。

要“删除”此警告,请添加return self;(在本例中)作为使编译器满意的最后一行。它永远不会在运行时到达,因为doesNotRecognizeSelector:会引发NSInvalidArgumentException异常。