3

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

4

1 回答 1

7

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

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

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

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

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

于 2012-05-27T14:22:16.787 回答