前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Xcode10.2 继承UITableView协议失效

Xcode10.2 继承UITableView协议失效

作者头像
我只不过是出来写写代码
发布2019-07-19 10:53:51
1.8K1
发布2019-07-19 10:53:51
举报

 前言:在这次App版本迭代进入集成测试阶段尾声,正式环境打包release环境后,测试回归发现许多包含 tableView 的页面都无法响应点击事件。但是在 debug 环境下从开发功能到滚动测试流程,一直都是没问题的。开始时,真的是百思不得其解


开发环境:

Xcode10.2.1 swift 5.0 涉及的类关系: 父类:BaseTableViewController 拥有成员变量 UITableView 子类:SubTableViewController 继承自 BaseTableViewController 父类遵循 UITableViewDelegate 与 UITableViewDataSource 代理,由子类 SubTableViewController 覆写实现具体的代理方法。

问题症结:
  1. debug 模式下真机与模拟器调试,遵循的代理方法都可以正常执行;
  2. release 模式打包出来后,子类中覆写的 TableView 相关协议 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)func numberOfSections(in tableView: UITableView) 方法无法正常执行,导致页面显示错误与点击事件无响应;
问题原因:

Xcode 10.2 版本打包编译 bug。在查阅了大量的资料后,最终得出了这个怎么也没想到的结果。 从官方论坛的 bug 反馈中,找到了证据:Inference of @objc from witnessed protocol requirement fails sometimes

解决方案:
  1. 使用 Xcode 10.1 打包上线(若使用 swift 5 版本,此方案无效);xcode 10.2.1 swift UITableView部分协议方法不执行
  2. 在子类中要覆写代理实现的方法前,添加 @objc ;Xcode 10.2 protocol inheritance issue
  3. 父类不再遵循 UITableView 相关代理,改由子类去遵循并实现

但愿以后 Apple 能少出一些直接影响到稳定性的 bug ......

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发环境:
  • 问题症结:
  • 问题原因:
  • 解决方案:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档