forwardInvocation: 为什么没有被执行?

- (void)viewDidLoad {
    [super viewDidLoad];
    [self performSelector:@selector(test) withObject:nil];
}

- (void)forwardInvocation:(NSInvocation *)anInvocation {
    NSLog(@"%@", anInvocation);
}

view载入方法中让viewcnotroller执行 test 方法
但是vc是没有test方法的
所以重载了 forwardInvocation: 方法。理论上这个方法应该被执行到,可是console没有打印任何东西就挂了。加断点也一样。

请问是怎么回事?

阅读 5k
1 个回答

你需求重载方法
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
这个方法返回了对应的对象才会进- (void)forwardInvocation:(NSInvocation *)anInvocation
否则不会进你重载的这个方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题