Objective C: what is a "(id) sender"?
(id)sender is the object which sent the message to that selector.
Code example:
- (IBAction)submitButton:(id)sender {
UIButton *button = (UIButton *)sender;
[button setEnabled:NO];
[button setTitle:@"foo" forState:UIControlStateDisabled];
}
Matt Galloway described the meaning of (id) sender
in actions on the iPhone Dev SDK forums thusly:
(id)sender is the object which sent the message to that selector. It's like in the delegate functions where you have the control passed in to the function, etc.
You'd use this if you had 2 objects which were calling that selector and you wanted to distinguish between them. Of course, you could just use two different functions, but it's often cleaner and less duplication of code to use one function.
See the UIControl Class Reference for more details.
An example for that, UITextField has a delegate which triggers when the UITextField editing ends:
-(IBAction) editingEnded:(id) sender {
// the cast goes here, lets assume there's more than one UITextfield
// in this Owner and you want to know which one of them has triggered
// the "editingEnded" delegate
UITextField *textField= (UITextField*)sender;
if(textField == iAmTheLastTextField)
{
// for example login now.
[self login];
}
}