在 ARC 之前,我有一个“X 可能无法响应 xxx”警告,这是一个非常无害的警告,不会阻止它编译。现在,我正在尝试将我的项目转换为 ARC,并且出现“No visible @interface for X declarations the selector xxx”错误,这会阻止它编译。
我确切地知道我在做什么,以及为什么出现警告,我可以告诉你程序是正确的。以前,编译器编译它没有问题,现在不应该阻止它编译。
确实,类 X 的接口没有声明该选择器,但是 X 是一个使用(这是 Objective-C 的美丽之处之一)动态处理发送给它的任何选择器的任何forwardInvocation:
消息的类,因此它的接口不可能声明所有可以在其上调用的选择器。并且选择器在某处声明,而不是在 X 上。