How to avoid “incomplete implementation” warning in partial base class

后端 未结 4 687
天命终不由人
天命终不由人 2020-12-29 08:20

I have created a protocol that my classes need to implement, and then factored out some common functionality into a base class, so I did this:

@protocol MyPr         


        
4条回答
  •  北海茫月
    2020-12-29 08:54

    You could conceivably do something like this:

    @implementation Base
    
    - (void)bar
    {
        if ([self class] == [Base class]) {
            [self doesNotRecognizeSelector:_cmd];
        }
    }
    
    @end
    

    That way, you have an implementation, but by default it raises an exception. However, if a derived class accidentally calls [super bar] or does not override bar, then the exception won't be raised. If that's not what you want, you could just shorten it to:

    @implementation Base
    
    - (void)bar
    {
        [self doesNotRecognizeSelector:_cmd];
    }
    
    @end
    

    In which case, an exception will be raised, even if a subclass calls [super bar] or does not override bar.

提交回复
热议问题