当前 Xcode 版本(10.2)存在一个严重问题。
有一个名为 BasicViewController
的类,其签名如下:
class BasicViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
然后我们有另一个类,像 ExampleViewController: BasicViewController
, 它有一些额外的逻辑。
现在来到棘手的部分......
我们在不同的模拟器和设备上构建和运行应用程序,一切正常。然后我们归档应用程序,突然didSelectRow
不再被触发。深度清理和项目清理使我们能够再次重现问题,而无需重新归档。
我无法想象任何可能会发生这种情况的情况。问题变得更糟,因为我发现更多相似的问题,UITableViewDelegate
方法仅在运行已归档的应用程序时才在子类中被调用。这可能是由于归档和提交应用程序期间的某些优化问题吗?
我验证了我们正确设置了表格的dataSource
和 delegate
,没有手势识别器覆盖了该表。相同的逻辑在第二/第三次运行应用程序后有效,但在深度清理项目后第一次失败。
我们进行了测试,并在子类中设置了UITableViewDataSource
和UITableViewDelegate
,然后每次都按预期工作。似乎继承协议不起作用。如果我们将协议保留在父类中并在子类中添加它们,则会提示子类中的协议冗余。
是否有人遇到过类似的情况?欢迎任何建议。