好的,这是一个非常奇怪的错误。我有一个UIViewController
子类和一个关联的 Xib
它是最初由外包商构建的继承项目的一部分,并且许多属性和方法的名称拼写错误,categorys
而不是categories
,merchantes
而不是merchants
,don
而不是done
等等......
大多数重构这些都很简单,XCode 的符号重命名重构工具可以很好地处理它们。
但是对于有问题的 xib 和控制器,在重构之后,存在一些运行时错误,即this class is not key value coding-compliant
和unrecognised selector
错误,它们都命名为旧的IBOutlet
和IBAction
名称。
搜索名称时,它们不会出现,并且专门在 xib 中作为 XML 源进行搜索,它们也不会出现。
我通过添加两个有问题的符号来解决这个问题,同时保留对更正名称的引用和所有其他调用。(即旧名称不链接到任何其他代码或 xib 引用。)
问题是,为什么以及在哪里调用这些旧符号名称?
(注:所有的IB引用都检查过了,项目也清理了好几次。)
这是有问题的参考文献(在 IB 中正确映射。)
源视图中显示的连接...
请注意,旧引用“navTitleLavel”和“donAction”如果从源中删除,则会引发错误,尽管它们在边距中未显示为连接。
现在已修复
(不做任何事情,假设缓存保存了符号)
请参阅下面的答案,似乎符号引用被缓存在某处,并且没有其他操作,不再抛出错误(删除旧名称引用时。)
请注意,这对清理项目有抵抗力。