什么是寄件人?

mar*_*rty 5 cocoa objective-c

我无法在任何地方找到这个答案.当方法头中有sender参数时,它是什么意思?它是代表调用它的实例,还是调用它的方法?

zou*_*oul 3

不涉及任何魔法。您可能正在谈论由 Interface Builder 链接到某些用户界面元素的方法,对吧?

- (IBAction) userDidPressButton: (id) sender {...}
Run Code Online (Sandbox Code Playgroud)

IBAction 是一个扩展为 void 的宏。它只是一个语法糖,标记了您希望在 Interface Builder 中可用的方法。现在,当您将此方法连接到某个界面元素(例如按钮)时,IB 会调用按钮上的 addTarget... 方法:

[button addTarget:yourObject action:@selector(userDidPressButton:) forEvent:...];
Run Code Online (Sandbox Code Playgroud)

当您按下按钮时,它会遍历其操作列表并触发 userDidPressButton,并将其自身作为第一个参数传递。这对于按钮来说可能没有多大用处,但您也可以使用相同的机制从滑块获取更改事件,在这种情况下,您可以使用 sender 参数来获取滑块值。