"如何精确地使用包含委托的类?"
"如何精确地使用包含委托的类?"
这个问题已经有了答案:
本质上我要问的是,什么是委托,但我也想知道我该怎么用?
委托的逻辑流是什么?我需要很好地解释,所以对于我的许多谷歌搜索和对这个网站的搜索,它们都揭示了它们的用途,但不是如何使用它们。
我有一个类,其中包含一个委托,并且可以调用一个函数,要求将委托作为参数传递。我应该怎么做,构建一个副本委托在我的类中,通过然后它们连接?一些为愚蠢的人提供的真正基本的解释将不胜感激!
谢谢!
admin 更改状态以发布 2023年5月24日
代理是将许多回调函数集中在一个类中。为了帮助你更好地理解,假设这是一个方法签名:
-[Foo doStuffWithInteger:(int)foo thenExecute:void (^block)(Foo*)]
(你知道块吧?)文档会说明一旦方法的主要算法完成后,它会回调(执行)传递的块。
代理模式是较旧的方法,并且会进行一些不同的操作。使用代理模式,Foo
类将具有这两种方法:
-[Foo setDelegate:(id)delegate] -[Foo doStuffWithInteger:(int)foo]
代替在doStuffWithInteger
结束时调用块代码,Foo
对象将在代理中调用一个方法。这意味着代理必须实现特定的方法,比如说-[???foo:(Foo*)completedStuffWithInteger:(int)]
,Foo
类将能够使用这个方法。所有需要回调的方法可能会在代理上调用不同的方法。
Objective-C中的代理通常允许您为类实现自定义的行为而无需对其进行子类化。例如,CALayer
的代理可以实现draw:inContext:
方法,在需要绘制图层时调用,并为图层提供内容。
由于Objective-C是鸭子类型(duck-typed),任何实现代理方法的类都可以使用。