Предупреждения компилятора и - (void) forwardInvocation: (NSInvocation *) iInvocation - PullRequest
1 голос
/ 27 марта 2012

У меня есть класс, который в основном делегирует свои реализации метода переменной-члену.

Чтобы упростить его написание, я реализовал

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

и

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

Это позволило моему классу реализовать несколько протоколов без большого количества стандартного кода.

Это работает довольно хорошо, за исключением того, что компилятор выдает предупреждения для всех методов, которые я не реализую, которые фактически пересылаютсяпеременная-член.Могу ли я сообщить системе, что эти методы действительно реализованы, или отключить только эти предупреждения только для этого источника?

Компилятор выдает 3 вида предупреждений:

  1. Метод в протоколе не реализован
  2. Свойство XXX требует реализации метода XXX
  3. Неполная реализация

В приведенном ниже коде класс объекта Iделегат для 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...