2012-07-25 6 views
7

Ich bin in Namenskonventionen für iOS-Steuerelemente Delegaten suchen. Ich kenne die should, will, did pattern for delegate methods. Ich kann diese Namenskonvention häufig von den Apple-APIs verwendet sehen. Meine Frage ist, gibt es Delegierte von Apple, die Methoden für eine einzelne Aktion haben sollten, werden? z.B. für die Zeilenauswahl:iOS-Delegaten Namenskonventionen - sollte, werde, tat

shouldSelectRow 
willSelectRow 
didSelectRow 

Ich habe keinen Delegaten gefunden, der alle drei definiert. Mein Gefühl ist, dass "Willen" -Methoden oft anstelle von Soll verwendet werden, d. H. Sie können einen Wert zurückgeben, um die Aktion abzubrechen.

Gibt es Gegenbeispiele?

+2

Ich denke, Sie haben es umgedreht - "sollte" sollte einen booleschen Wert zurückgeben, der dem Sender sagt, fortzufahren oder nicht. Wird es dir sagen, dass es passieren wird und du bemerkst, dass du das tun kannst. Hast du Aktionen nach dem passiert? Meine $ 0.02 –

+0

Ich kombiniere die Verwendung von Willen und sollte, wird so genannt, aber mit der Option, NEIN zurückzugeben, wenn Sie nicht wollen, dass die Änderung voran geht. Die Soll-Methode ergibt für mich keinen Sinn. Es ist nur extra Overhead. –

+0

@DavidH das war mein erstes Verständnis, aber die 'UITableViewDelegate' Methode' tableView: willSelectRowAtIndexPath' kann einen Wert zurückgeben, der die Auswahl aufhebt. Mit anderen Worten, es erfüllt die Verantwortung. – ColinE

Antwort

1

Sollten Methoden immer einen BOOL-Wert zurückgeben und Ihnen das aktuelle Verhalten eines Objekts mitteilen (aber sie werden nie automatisch aufgerufen). Werden Methoden sind Delegat Methoden, die aufgerufen werden, wenn ein Ereignis passieren wird, wie

-(void)applicationWillResignActive... 

und „did“ Methoden werden auch Methoden delegieren, die aufgerufen werden, nach dem das Ereignis stattfand, wie appplicationDidFinishLaunching ...

+0

also meinst du sollte manuell aufgerufen werden? – OMGPOP

+0

Ich meine, sollten Methoden immer aufgerufen werden, um Sie zu fragen, ob etwas passieren sollte oder nicht. Zum Beispiel diese Funktion - (BOOL) TextField: (UITextField *) TextField sollteChangeCharactersInRange: (NSRange) Bereich ErsetzungString: (NSString *) string; können Sie entscheiden, ob die Zeichen in diesem Bereich geändert werden sollen oder nicht. Der Code in der Funktion trifft nur diese Entscheidung und gibt JA oder NEIN zurück. –