Cocoa-helper

方寒
2023-12-01

这个代理的主要作用就是重写控件会触发的消息 因为这个消息是自动触发的 比如随便假设一个 TextField文本框控件会它有几个自己的方法

controlTextDidBeginEditing://光标进入输入框第一次输入得到事件通知 就是鼠标第一次点击文本框的时候就会调用这个消息

controlTextDidEndEditing://光标离开输入框时得到事件通知

controlTextDidChange://文本框正在输入 内容变化时得到事件通知

这三个消息都是在TextField类里面已经写好了的 然后你没办法直接重写这三个方法
这个时候你可以给这个文本框对象set一个delegate 然后重写这几个方法 要哪个写哪个 不用全部重写 然后触发这个消息的时候 就会先问delegate对象是否可以调用这个消息 这个delegate对象就是这个文本框的helper

实现委托

需要协议 需要协议的原因就是你添加了<NSTextDelegate>你才能知道要重写哪些方法 <NSTextDelegate>里面就有NSText会自动调用的方法

<NSDelegate> //相应的delegate 例如NSTextField的就是<NSTextDelegate>

当一个对象接受到某个事件或者通知的时候, 会向它的Delegate对象查询它是否能够响应这个事件或者通知,如果可以这个对象就会给它的Delegate对象发送一个消息(执行一个方法调用)

说白点 就是有些类(例如NSTextField)是有Delegate变量的 然后这些对象就可以通过setDelegate设置

- (void)setTarget:(nullable id)target;

然后当你这个对象调用一个自己的方法 这个时候就会去问代理 就是前面设置的那个delegate 看他有没有办法

 类似资料: