protocol的命名以及protocol中定义方法的命名

仰望.jpg

protocol的命名:

委托类的类名+Delegate

  • 例如UITextField控件中定义的协议: UITextFieldDelegate

delegate消息的命名:

  • 以发送消息的类的类名(去掉前缀)作为开头,参数指向委托对象:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
  • 每个类名后面固定一个冒号(如textField:),除非这个方法只有一个参数,就是委托对象:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
- (BOOL)applicationOpenUntitledFile:(NSApplication *)sender;
  • 上面这一条规定有一个例外,发布通知时调用的方法,在这种情况下,唯一的参数是通知对象:
- (void)windowDidChangeScreen:(NSNotification *)notification;
  • 当委托对象中的一个操作已经发生或将要发生时,使用didwill作为前缀来通知delegate:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)textFieldDidBeginEditing:(UITextField *)textField;
  • 尽管您可以使用didwill来请求delegate为委托对象做某事,但是should是首选。should消息时应该返回一个布尔值,这个返回值用于确定delegate是否会响应消息。
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;

详情请参考官方文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容