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

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

有没有更好的办法?

谢谢!

【问题讨论】:

    标签: ios swift uiscenedelegate


    【解决方案1】:

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

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

    【讨论】:

    • 但是我仍然需要运行正常的初始化程序,所以 SceneDelegate 可以继续与 iOS 很好地配合使用,对吧?我不知道如何让正常的 init 像往常一样运行,只是在它之后运行我的自定义 init。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2012-07-21
    • 2011-11-17
    • 2014-12-29
    相关资源
    最近更新 更多