gpt4 book ai didi

ios - 调用委托(delegate)方法

转载 作者:行者123 更新时间:2023-11-28 22:57:04 24 4
gpt4 key购买 nike

我仍然不能完全理解这些委托(delegate)方法是如何被调用的。我在一个类中有 UIViewController,UITextFieldDelegate 将调用它的委托(delegate)方法而不指定像 textField.delegate = self;

但出于某些不同的目的,例如 UIWebViewDelegate,我们应该像 webView.delegate = self; 这样输入,它似乎在调用它的委托(delegate)方法。完美。

但是现在我遇到了一个问题。我在同一个类中使用 CLLocationManagerDelegateCALayer。对于两者,我都给出了 location.delegate =self;layer.delegate =self; 在某些时候两者相互冲突并且只有一个正在工作 < strong>CLLocationManagerDelegateCALayer。另一件事是停止。我不明白为什么会这样?任何原因?我们如何克服这一点。甚至我计划使用其他一些框架,比如 UIWebView 。对于那些委托(delegate)方法,我也会面临同样的问题。你能告诉我为什么它以这种方式工作吗?

最佳答案

在您未指定的情况下将调用其委托(delegate)的类具有默认实现,这意味着它们已经知道要做什么,并且只有在您覆盖这些方法时才会改变它们的行为。

将 2 个或更多类设置为同一个委托(delegate)不应相互干扰(除非出于非常奇怪的原因,方法在两个自定义类中的名称相同)。

您的问题很可能是您没有实现这些方法或错误地使用了这些类。

例如,位置管理器要求您创建实例、配置它并开始运行更新。这种类型的委托(delegate)最常用的方法是“更新位置”(或类似的东西)。如果您想在每次收到新位置时得到通知,则必须实现。否则,您必须随时手动读取位置。

作为建议,每次为对象设置委托(delegate)时,都必须执行 object.delegate = self;事物。您可能注意到,除非您在 header 中指定它符合该协议(protocol),否则您会收到警告:例如。

只需控制点击 UITextFieldDelegate 单词即可。

寻找@required 下的方法,那些你必须始终实现的方法。 @optional 有默认实现,所以除非你想改变它不需要实现它们的行为。

关于ios - 调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10578769/

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