swifter-tips / Public-Issues

Public issues for Swifter-tips book
103 stars 3 forks source link

关于 第18个 tip "Designated, Convenience" 和 Required 的疑惑 #48

Closed zyg-github closed 8 years ago

zyg-github commented 9 years ago

原文: “我们可以通过添加 required 关键字进行限制,强制子类对这个方法重写实现。这样做的最大的好处是可以保证依赖于某个 designated 初始化方法的 convenience 一直可以被使用。”

通过 required 不能保证 依赖于某个 designated 初始化方法的 convenience 一直可以被使用 除非只有一个 designated 初始化方法

要保证 convenience 一直可以被使用 需要保证 designated 的所有初始化方法 被实现(默认继承或者 手动实现都可以)

不知道对不对? 大神指点一下

onevcat commented 9 years ago

我在这里的意思是把所有 designated 添加 required,可能书里说法有点不好,我看看怎么改一改。

对于 convenience,其实只需要理解它必须 call 到同一 class 的 convenience 或者 designated,而在父类中加入 required 就是为了给编译器提供约定,来保证子类继承的 convenience 最后一定可以 call 到子类中某一个 designated。

zyg-github commented 9 years ago

恩恩 理解 谢谢 喵神的解答