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

Gar*_*oal 3 objective-c ios

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

Eva*_*ski 7

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

- (id)initWithFrame:(CGRect)aRect
{
    [self doesNotRecognizeSelector:_cmd];
}
Run Code Online (Sandbox Code Playgroud)

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

控制到达非空函数的结束.

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