-
什么时候才用到消息转发呢?
NSMutablearray *array = @[@1, @2];
[array addObject:@"222"];
这时候会报错, 别人传过来的数组是否是可变,不知道啊。这样会Crash。这种情况可以使用消息转发来解决。
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
{
if ([aSelector respondsToSelector:aSelector]) {
return [super methodSignatureForSelector:aSelector];
}
return [NSMethodSignature signatureWithObjCTypes:"v@:"];;
}
- (void)forwardInvocation:(NSInvocation *)anInvocation
{
NSStringFromSelector(anInvocation.selector);
// 我可以拿到那个未找到的方法,收集起来告诉后台。
}
还上面,这种我们可以知道哪个方法没有实现,收集一下这个信息到后台,再告诉程序员。
网友评论