gpt4 book ai didi

objective-c - 在 Objective-C 和 iOS 中,似乎委托(delegate)可以去任何方向?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:32:26 24 4
gpt4 key购买 nike

一开始我有点惊讶UIView的绘制是由CALayer帮助完成的,但是CALayer的delegate其实是UIView。好像关系倒过来了。

但是,delegate 是否真的没有“总指挥”或“所有权”关系......它可以去任何方向:例如,A 类可以有一个委托(delegate) B 类,同时, B 类也可以有一个委托(delegate) A 类。

更重要的是,可以有多个委托(delegate),这意味着一个对象需要其他多个对象的帮助。

有点类似于现实世界,CTO可以将“面试某人的技术能力测试”委托(delegate)给大卫,现在大卫是提供1到10分的委托(delegate)人。但大卫可以委托(delegate)一个是否满足要求返回给 CTO(一个 bool 值)“我只能面试 Javascript 的候选人,我同意可以雇用新候选人并同意与他一起工作,如果你发现他擅长可扩展性问题,因为我们团队需要这样的人”——David 将此委托(delegate)给 CTO。

所以在 Objective-C(也可能是任何语言)中,可以有多个委托(delegate),它们可以去任何方向,主要思想只是为了一些“帮助”,原始对象不知道如何处理。是真的吗?

最佳答案

iOS 中的委托(delegate)与现实生活中的委托(delegate)不同。委托(delegate)不会主动告诉对象如何工作,而是被动地指示对象应该如何操作,并接收有关对象状态的更新。

委托(delegate)用于监视它委托(delegate)的对象的状态,并提供有关对象应如何执行其任务的说明(必要时)。您有权说没有特定的所有权,例如 A 类可以是 B 类的委托(delegate),而 B 类可以委托(delegate) A 类。这很好。

有四种主要类型的委托(delegate)方法,它们既向委托(delegate)提供有关对象状态的信息,又向委托(delegate)请求指令。 PeyloW 在他的回答中很好地描述了它们 here .

所有这一切都是在说是的,你是对的。

关于objective-c - 在 Objective-C 和 iOS 中,似乎委托(delegate)可以去任何方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10791831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com