У меня есть класс, который в основном делегирует свои реализации метода переменной-члену.
Чтобы упростить его написание, я реализовал
-(void)forwardInvocation:(NSInvocation *)iInvocation;
и
-(NSMethodSignature*)methodSignatureForSelector:(SEL)aSelector;
Это позволило моему классу реализовать несколько протоколов без большого количества стандартного кода.
Это работает довольно хорошо, за исключением того, что компилятор выдает предупреждения для всех методов, которые я не реализую, которые фактически пересылаютсяпеременная-член.Могу ли я сообщить системе, что эти методы действительно реализованы, или отключить только эти предупреждения только для этого источника?
Компилятор выдает 3 вида предупреждений:
- Метод в протоколе не реализован
- Свойство XXX требует реализации метода XXX
- Неполная реализация
В приведенном ниже коде класс объекта 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;
}