我们都知道,如果我们想要自定义指定构造器时,应该要遵循以下3个原则(图1): 1、子类指定构造器必须调用父类指定构造器 2、便捷构造器只能通过调用自身指定构造器来完成初始化 3、指定构造器必须要用 NS_DESIGNATED_INITIALIZER 标示 但是如果你继承了 UITableViewController,并且自定义了指定构造器,而你的项目刚好要支持 iOS8 的话,在 iOS8 下就会出现一个必崩的 bug。示例代码及简单解释见图2。 有人提了对应的 radar, stackoverflow 上也有对应的详尽解释 更多内容可查看 目前唯一的解决方案就是不继承 UITableViewController,而是继承自 UIViewController 然后持有一个 UITableView😂