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

protocol的命名以及protocol中定义方法的命名_第1张图片
仰望.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;

详情请参考官方文档

你可能感兴趣的:(protocol的命名以及protocol中定义方法的命名)