0

使用 cocoa 编码时,我注意到定义时不需要sender参数IBAction,因此执行以下操作:

- (IBAction)showUserInfo:(id)sender;

可以声明为

- (IBAction)showUserInfo;

所以我想知道除了拥有发送操作的按钮/菜单项之外是否还有其他好处?我能想到的唯一其他情况是很少有对象调用相同的 IBAction。还要别的吗?

4

2 回答 2

2

医生说,

sender参数通常标识发送操作消息的控件(尽管它可以是由实际发送者替代的另一个对象)。这背后的想法类似于明信片上的寄信人地址。如果需要,目标可以向发送者查询更多信息。

如果您想从中获取任何数据,则sender参数会有所帮助。例如,在 UISegmentControl 值更改时,如@Mark Adams 的回答。因此,如果您不希望发件人提供任何信息,则可以省略它,如您的- (IBAction)showUserInfo;示例所示。

于 2011-06-29T05:49:51.133 回答
1

sender当您将该方法连接到其值可以更改并且您可能需要使用的 UI 对象时,使用该参数会很方便。

例如,如果我将一个方法连接到 aUISegmentedControl并将其控制事件设置为 UIControlEventValueChanged,我可以使用作为sender:参数传递的对象来获取它的选定段索引,然后根据该值在 UI 中进行更改。

-(IBAction)segmentedControlValueChanged:(id)sender
{
    UISegmentedControl *control = (UISegmentedControl *)sender;

    // Show or hide views depending on the selected index of the segmented control.
    if (control.selectedSegmentIndex == 0)
        someView.hidden = YES;
    else 
        someView.hidden = NO;
}
于 2011-06-29T05:45:40.983 回答