Haben Sie eine Steckdose für Ihre Taste? Ist der Button das einzige UI-Element, das -startClick:? Wenn ja, schreiben Sie dann die Aktion-Methode wie folgt aus:
- (IBAction)startClick:(id)sender {
NSParameterAssert(sender == self.startClickButton);
if (sender == self.startClickButton) {
UIButton *button = self.startClickButton;
[...]
}
}
Wenn Sie nicht über einen Auslass/Eigenschaft für die Schaltfläche haben, können Sie die Absender Klasse testen, und werfen falls.
- (IBAction)startClick:(id)sender {
NSParameterAssert([sender isKindOfClass: [UIButton class]]);
if ([sender isKindOfClass: [UIButton class]]) {
UIButton *button = (UIButton *)sender;
[...]
}
}
Schließlich ist es zulässig, (bei der Kompilierung) für jede Nachricht eine ID eingegeben Wert zu senden. (Sie erhalten eine Ausnahme zur Laufzeit, wenn der Empfänger nicht auf diese Nachricht reagiert.) Sie können jedoch die Punktsyntax nicht verwenden.
Wenn Sie also wissen, dass der Absender immer eine Schaltfläche ist, können Sie Ihre Methode ohne Casting schreiben. Sie müssen die Nachrichtensyntax anstelle der Punktsyntax verwenden.
[button setAnimationImages: [NSArray ...]];
[button setAnimationDuration: 1];
Dies ist wichtig zu verstehen - Punkt-Syntax entspricht Nachrichtensyntax senden - es ist nicht mystisch ist.
Dies ist ein Duplikat Ihrer früheren Frage: http: // stackoverflow.com/questions/1088481/sender-tag –