xcode – 何时在Swift中初始化委托

xcode – 何时在Swift中初始化委托,第1张

概述我有一个基本问题.我正在开发一个包含许多委托模式的项目,并希望参考有关初始化它们的最佳方法. 以下是我制作的测试代表的一些想法: 选项1: 它失败了,因为我在super.init()之前启动了委托给自己 protocol MyClassDelegate { func doSomething()}class MyClass { var delegate: MyClassDel 我有一个基本问题.我正在开发一个包含许多委托模式的项目,并希望参考有关初始化它们的最佳方法.

以下是我制作的测试代表的一些想法:

选项1:

它失败了,因为我在super.init()之前启动了委托给自己

protocol MyClassDelegate {    func doSomething()}class MyClass {    var delegate: MyClassDelegate!    init(delegate: MyClassDelegate){        self.delegate = delegate    }    func myClassFuction(){        self.delegate.doSomething()    }}class ClassConformingToDelegate: NSObject,MyClassDelegate {    let myClass: MyClass    overrIDe init(){        myClass = MyClass(delegate: self) // Error because it's called before super.init        super.init()    }            func doSomething(){        //called from the delegate    }}

选项2:

它的工作原理,但是我冒着让委托成为nil的风险.每次我想调用一个方法时,我是否必须运行’if delegate!= nil’检查?有办法吗?以这种方式初始化委托是一个好习惯吗?

protocol MyClassDelegate {    func doSomething()}class MyClass {    var delegate: MyClassDelegate!    init(){    }    func myClassFuction(){        self.delegate.doSomething() // might fail if delegate is nil    }}class ClassConformingToDelegate: NSObject,MyClassDelegate {    let myClass: MyClass    overrIDe init(){        myClass = MyClass()        super.init()        myClass.delegate = self // works because called after super.init    }            func doSomething(){        //called from the delegate    }}

这只是一些想法.我只是想学习最好的方法.我对所有建议持开放态度.

谢谢!!

解决方法 选项2看起来更好.但是,在这种情况下,建议使用可选作为委托类型.这样,每次要使用它执行任务时,都不需要检查“if delegate!= nil”.您可以简单地使用可选链接,该链接专门针对您希望仅在包含值时在可选项上执行任务的情况.
protocol MyClassDelegate {    func doSomething()}class MyClass {    var delegate: MyClassDelegate?    init(){    }    func myClassFuction(){        self.delegate?.doSomething() // will do nothing if delegate is nil    }}class ClassConformingToDelegate: NSObject,MyClassDelegate {    let myClass: MyClass    overrIDe init(){        myClass = MyClass()        super.init()        myClass.delegate = self    }            func doSomething(){        //called from the delegate    }}
总结

以上是内存溢出为你收集整理的xcode – 何时在Swift中初始化委托全部内容,希望文章能够帮你解决xcode – 何时在Swift中初始化委托所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1104657.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存