不涉及任何魔法。您可能正在谈论由 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 参数来获取滑块值。