1

我有一个类,它主要将其方法实现委托给一个成员变量。

为了简化编写,我实现了

-(void)forwardInvocation:(NSInvocation *)iInvocation; 

-(NSMethodSignature*)methodSignatureForSelector:(SEL)aSelector;

这使我的班级能够在没有大量样板代码的情况下实现一些协议。

它工作得很好,除了编译器对我没有实现的所有方法发出警告,这些方法实际上被转发到成员变量。我有没有办法告诉系统这些方法实际上已经实现,或者只为那个源关闭那些警告?

编译器发出 3 种警告:

  1. 协议中的方法未实现
  2. 属性 XXX 需要方法 XXX
  3. 待实施 实施不完全

在下面的代码中,我委托给的对象的类是ShareUser,实例是_user

-(void)forwardInvocation:(NSInvocation *)iInvocation
{
    SEL aSelector = [iInvocation selector];
    if ([ShareUser instancesRespondToSelector:aSelector])
        [iInvocation invokeWithTarget:_user];
    else
        [self doesNotRecognizeSelector:aSelector];
}
-(NSMethodSignature*)methodSignatureForSelector:(SEL)aSelector
{
    if ([ShareUser instancesRespondToSelector:aSelector])
        return [ShareUser instanceMethodSignatureForSelector:aSelector];

    return nil;
}
4

0 回答 0