"如何精确地使用包含委托的类?"

23 浏览
0 Comments

"如何精确地使用包含委托的类?"

这个问题已经有了答案

如何在Objective-C中创建委托?

Objective C的iPhone开发中“委托”是什么?【重复】

本质上我要问的是,什么是委托,但我也想知道我该怎么用?

委托的逻辑流是什么?我需要很好地解释,所以对于我的许多谷歌搜索和对这个网站的搜索,它们都揭示了它们的用途,但不是如何使用它们。

我有一个类,其中包含一个委托,并且可以调用一个函数,要求将委托作为参数传递。我应该怎么做,构建一个副本委托在我的类中,通过然后它们连接?一些为愚蠢的人提供的真正基本的解释将不胜感激!

谢谢!

admin 更改状态以发布 2023年5月24日
0
0 Comments

代理是将许多回调函数集中在一个类中。为了帮助你更好地理解,假设这是一个方法签名:

-[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),任何实现代理方法的类都可以使用。

0
0 Comments

代理接收来自其他对象的“代理”消息,并对其进行操作。

让我们以UITableView为例。它有一个UITableViewDelegate,它询问另一个对象如何对某些事情进行操作,例如行高度。

0