我有一个UIView
的子类,它继承了- initWithFrame:
方法。但是,我不希望在我的子类上调用该方法。
有没有办法在我的子类上“删除”该方法?
答案 0 :(得分:7)
不要实现它,也不要调用[super initWithFrame:aRect]
。只需使用_cmd
参数调用doesNotRecognizeSelector:
:
- (id)initWithFrame:(CGRect)aRect
{
[self doesNotRecognizeSelector:_cmd];
}
如果方法没有返回void
,您将收到编译器的警告:
控制到达非空函数的末尾。
要“删除”此警告,请添加return self;
(在本例中)作为使编译器满意的最后一行。它永远不会在运行时到达,因为doesNotRecognizeSelector:
会引发NSInvalidArgumentException
异常。