Swift protocol 和 delegate 的问题

2016-11-29 14:20:44 +08:00
 walkie

刚刚开始学用 swift 开发 ios 也想试着用代理模式 结果发现 delegate 总是 nil 烧脑想了好久行不通啊 举个栗子:

protocol speak {
    func sayHi()
}

class speakHandler: speak {
    func sayHi() {
        print("hello world")
    }
}

class person {
    var speakDelegate: speak?
    
    func doSpeak() {
        self.speakDelegate?.sayHi()
    }
}

let me = person()

me.doSpeak()

跑在 playgroud 里 speakDelegate 就是 nil , 求大家指教:)

3471 次点击
所在节点    Swift
2 条回复
byhuang
2016-11-29 14:59:19 +08:00
因为你并没有给 speakDelegate 赋值,告诉它谁是他的代理,那么调用 delegate 的方法肯定是不行的。
加上 me. speakDelegate = speakHandler()就可以了
walkie
2016-12-13 10:14:27 +08:00
@byhuang 谢谢, 明白啦, 不好意思这么久才回复:)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/324097

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX