我有一个类,它主要将其方法实现委托给一个成员变量。
为了简化编写,我实现了
-(void)forwardInvocation:(NSInvocation *)iInvocation;
和
-(NSMethodSignature*)methodSignatureForSelector:(SEL)aSelector;
这使我的班级能够在没有大量样板代码的情况下实现一些协议。
它工作得很好,除了编译器对我没有实现的所有方法发出警告,这些方法实际上被转发到成员变量。我有没有办法告诉系统这些方法实际上已经实现,或者只为那个源关闭那些警告?
编译器发出 3 种警告:
- 协议中的方法未实现
- 属性 XXX 需要方法 XXX
- 待实施 实施不完全
在下面的代码中,我委托给的对象的类是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;
}