Objective c 发送消息还是接收消息?

Objective c 发送消息还是接收消息?,objective-c,Objective C,正如我所知,[self-setDate:…]意味着self是接收器,setDate:是消息。那么发送者是谁 我设置了一个按钮,操作(iAction)按钮按下:(id)sender。我知道这个按钮是目标,按下的按钮是动作。那么哪一个可以是发送者 发送者是执行任务的对象…假设您的示例(iAction)按钮按下: 如果您按下一个按钮,该按钮将发送后面的任何代码。看我的例子 - (IBAction)pushButton:(id)sender { UIButton *pushedButton = (UIB

正如我所知,
[self-setDate:…]
意味着
self
是接收器,
setDate:
是消息。那么发送者是谁

  • 我设置了一个按钮,操作
    (iAction)按钮按下:(id)sender
    。我知道这个按钮是目标,按下的按钮是动作。那么哪一个可以是
    发送者


  • 发送者是执行任务的对象…假设您的示例(iAction)按钮按下:

    如果您按下一个按钮,该按钮将发送后面的任何代码。看我的例子

    - (IBAction)pushButton:(id)sender {
    UIButton *pushedButton = (UIButton *)sender;
    [button setTitle:@"Press me to Send" forState:UIControlStateNormal];
    }
    

    发送者是执行任务的对象…假设您的示例(iAction)按钮按下:

    如果您按下一个按钮,该按钮将发送后面的任何代码。看我的例子

    - (IBAction)pushButton:(id)sender {
    UIButton *pushedButton = (UIButton *)sender;
    [button setTitle:@"Press me to Send" forState:UIControlStateNormal];
    }
    
    1) 是,
    self
    是消息的接收者,
    setDate:
    是消息(方法调用)。没有“发送者”。“发件人”到底是什么意思

    2) 在代码中,设置按钮以调用
    按钮pressed:
    方法如下:

    [someButton addTarget:someTarget action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchUpInside];
    
    someTarget
    通常是
    self
    。“目标”是具有“操作”方法的对象。该方法如下所示:

    - (void)buttonPressed:(UIButton *)button {
    }
    
    “someButton”是“sender”,因为它是发生事件的按钮。

    1)是的,
    self
    是消息的接收者,
    setDate:
    是消息(方法调用)。没有“发送者”。“发件人”到底是什么意思

    2) 在代码中,设置按钮以调用
    按钮pressed:
    方法如下:

    [someButton addTarget:someTarget action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchUpInside];
    
    someTarget
    通常是
    self
    。“目标”是具有“操作”方法的对象。该方法如下所示:

    - (void)buttonPressed:(UIButton *)button {
    }
    
    “someButton”是“发送者”,因为它是包含事件的按钮

    1) 正如我所知,
    [self-setDate:…]
    意味着
    self
    是接收器,
    setDate:
    是消息。那么发送者是谁

    发件人是发送消息的对象(如果有)

    那是哪一个

  • 你在一份声明中写下了这条信息
  • 您在函数、类方法或实例方法中编写了该语句

    • 如果它是一个函数,那么就没有作为发送方的对象
    • 如果是类方法,可以说类是发件人(取决于你认为类是对象)。
    • 如果它是一个实例方法,则调用该方法的对象(即,收到该消息的对象)就是
      setDate:
      消息的发送者

      例如,如果您从NSWindowController子类中名为
      buttonPressed:
      实例方法发送
      setDate:
      消息,则您的窗口控制器收到
      buttonPressed:
      消息的实例(对象)就是发送
      setDate:
      消息的对象

  • 当然,如果消息的接收者是
    self
    ,那么您就是在向自己发送消息,因此您既是接收者也是发送者

    2) 我设置了一个按钮,操作(iAction)按钮按下:(id)发送者。我知道这个按钮是目标,按下按钮就是动作

    不!按钮不是目标;按钮有一个目标,它是另一个对象。目标是接收操作消息的对象

    想象一个射箭目标。目标没有发射箭!它接收箭头

    那么哪一个可以是发送者呢

    sender
    变量引用的对象通常是发送消息的对象

    通常,它是一个控件(如按钮)或菜单项:按下时,控件或菜单项向其目标发送其操作消息,并将自身(控件或菜单项)作为“发送者”传递

    因此,您的按钮将向其目标发送一条消息,该消息是设置为按钮操作的任意一条消息,并且由于它正在发送消息,因此它将自身传递为
    发送者

    查看
    发送方
    的唯一原因是检查发送方的
    标记
    表示对象
    。action方法是唯一一种可能需要关心发送方的方法(这就是为什么它有这个参数),即使这样,通常也不会

    1) 正如我所知,
    [self-setDate:…]
    意味着
    self
    是接收器,
    setDate:
    是消息。那么发送者是谁

    发件人是发送消息的对象(如果有)

    那是哪一个

  • 你在一份声明中写下了这条信息
  • 您在函数、类方法或实例方法中编写了该语句

    • 如果它是一个函数,那么就没有作为发送方的对象
    • 如果是类方法,可以说类是发件人(取决于你认为类是对象)。
    • 如果它是一个实例方法,则调用该方法的对象(即,收到该消息的对象)就是
      setDate:
      消息的发送者

      例如,如果您从NSWindowController子类中名为
      buttonPressed:
      实例方法发送
      setDate:
      消息,则您的窗口控制器收到
      buttonPressed:
      消息的实例(对象)就是发送
      setDate:
      消息的对象

  • 当然,如果消息的接收者是
    self
    ,那么您就是在向自己发送消息,因此您既是接收者也是发送者

    2) 我设置了一个按钮,操作(iAction)按钮按下:(id)发送者。我知道这个按钮是目标,按下按钮就是动作

    不!按钮不是目标;按钮有一个目标,它是另一个对象。目标是接收的对象