是否可以在默认初始化代码运行后立即运行初始化代码?
Posted
技术标签:
【中文标题】是否可以在默认初始化代码运行后立即运行初始化代码?【英文标题】:Is it possible to run initialization code just after the default init code runs? 【发布时间】:2020-04-18 02:19:26 【问题描述】:在 ios 开发过程中,我使用了很多来自我无法访问的专有代码的类。我想运行在将此类实例化为对象时应该运行的自定义代码,但我不知道该怎么做,因为在不知道 init 需要哪些参数的情况下,我无法真正覆盖它们的 init。
例如,我正在研究一个 SceneDelegate
,它是 UIResponder
和 UIWindowSceneDelegate
的子类,我希望有一个属性,该属性应该在第一次实例化类时被初始化,但我不知道该怎么做。
目前我只是默认将属性定义为可选,在将首先使用它的方法中对其进行初始化,并围绕这个类编写一大堆代码来处理它不必要地可选的事实。
有没有更好的办法?
谢谢!
【问题讨论】:
【参考方案1】:您可以尝试使用自己的 init() 进行类扩展?
extension SceneDelegate
init(someParam: ...)
....
【讨论】:
但是我仍然需要运行正常的初始化程序,所以 SceneDelegate 可以继续与 iOS 很好地配合使用,对吧?我不知道如何让正常的 init 像往常一样运行,只是在它之后运行我的自定义 init。以上是关于是否可以在默认初始化代码运行后立即运行初始化代码?的主要内容,如果未能解决你的问题,请参考以下文章