我哪儿也找不到这个答案。方法头中有sender参数意味着什么?它是表示调用它的实例,还是表示调用它的方法?

最佳答案

没有魔法。您可能在讨论interface builder链接到某些用户界面元素的方法,对吧?

- (IBAction) userDidPressButton: (id) sender {...}

ibaction是一个扩展为void的宏。它只是一种语法糖,用于标记希望在接口生成器中可用的方法。现在,当您将这个方法连接到某个接口元素(比如按钮)时,ib调用addTarget…按钮上的方法:
[button addTarget:yourObject action:@selector(userDidPressButton:) forEvent:...];

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

08-05 22:21