objective-c - ios 委托(delegate)默认为什么

标签 objective-c ios cocoa delegates

如果不指定委托(delegate),self 是默认委托(delegate)吗?

此外,如果您有一个 UITextField,您是否需要确保它知道它是一个 UITextFieldDelegate 还是默认情况下是一个?

最佳答案

If you don't specify a delegate,

什么对象?由具体对象的实现来决定。

is the self the default delegate?

不,在没有任何其他信息的情况下,委托(delegate)可能为零。

但是,如果您正在编写一个类实现,并希望该对象默认将其委托(delegate)设置为 self,您当然可以这样做。不过,我认为这通常会让人感到困惑而不是有用。

如果你想默认做某事,只需检查委托(delegate)是否为 nil。 (有人总是可以将您的委托(delegate)设置为 nil,因此无论如何您都必须进行该检查。)

If you have a UITextField do you need to make sure it knows it is a UITextFieldDelegate or is it one by default?

UITextField 没有实现 UITextFieldDelegate 中的任何方法——或者至少它没有宣传它这样做——所以我不确定是什么你是说这里UITextField 本身不能用作 UITextFieldDelegate

如果您要继承 UITextField 并在 UITextFieldDelegate 协议(protocol)中添加方法,那么您可以将其标记为实现 UITextFieldDelegate:

@interface MyTextField : UITextField <UITextFieldDelegate>

但这不会默认发生,您必须让它发生。

关于objective-c - ios 委托(delegate)默认为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158597/

相关文章:

objective-c - Cocoa 的 JSON 解析器

ios - 完善我的 MagicalRecord 导入

ios - 为什么我不能从另一个类访问我的 UIView 的类属性?

ios - UISearchBar 文本字段高度不增加

ios - UIImageView 边界、框架

iOS - 使用 URL 方案打开某些 View Controller

objective-c - NSOperationQueue - 过早完成调用

ios - google chromecast 中的设备 Controller 应用程序连接失败

objective-c - Objective-c 中的类型转换

objective-c - Cocoa——切换一个 BOOL 而不重复它的名字