是否可以在默认初始化代码运行后立即运行初始化代码?

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,它是 UIResponderUIWindowSceneDelegate 的子类,我希望有一个属性,该属性应该在第一次实例化类时被初始化,但我不知道该怎么做。

目前我只是默认将属性定义为可选,在将首先使用它的方法中对其进行初始化,并围绕这个类编写一大堆代码来处理它不必要地可选的事实。

有没有更好的办法?

谢谢!

【问题讨论】:

【参考方案1】:

您可以尝试使用自己的 init() 进行类扩展?

extension SceneDelegate 
   init(someParam: ...) 
      ....
   

【讨论】:

但是我仍然需要运行正常的初始化程序,所以 SceneDelegate 可以继续与 iOS 很好地配合使用,对吧?我不知道如何让正常的 init 像往常一样运行,只是在它之后运行我的自定义 init。

以上是关于是否可以在默认初始化代码运行后立即运行初始化代码?的主要内容,如果未能解决你的问题,请参考以下文章

加载特定视图控制器后立即运行代码

是否有一个生命周期钩子在组件初始化后运行一次,但也在加载双向绑定后运行?

类的加载

类的加载

Pygame重启?

为啥等待后的代码没有立即运行?它不应该是非阻塞的吗?