22.open与public
在对自己的项目进行组件化的时候遇到这样一个问题
UI组件中
public class LedgerNavigationViewController: UINavigationController, StoryboardInitializable {
public override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
}
项目中(报错)
Cannot inherit from non-open class 'LedgerNavigationViewController' outside of its defining module
Overriding non-open instance method outside of its defining module
class MapNavigationController: LedgerNavigationViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
weak var selector: LocationSelector?
}
修改
根据提示,将组件库中的 public
改成 open
,就可以了。
open class LedgerNavigationViewController: UINavigationController, StoryboardInitializable {
open override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
}
总结
平时每台用到 open
,这里遇到问题才很清楚get到他俩的不同,主要区别在继承的控制上。
public
只能在模块内部被继承
open
可以再其他模块被继承
Last updated
Was this helpful?