2012-07-25 13 views
7

Estoy buscando convenciones de nomenclatura para delegados de controles de iOS. Estoy familiarizado con el should, will, did pattern for delegate methods. Puedo ver esta convención de nombres utilizada ampliamente por las API de Apple. Mi pregunta es, ¿hay delegados suministrados por Apple que tengan, deberán, métodos para una sola acción? p.ej. para la selección de filas:Convenciones de nomenclatura de iOS para iOS: debería, será

shouldSelectRow 
willSelectRow 
didSelectRow 

No he encontrado un delegado que defina las tres. Mi sensación es que los métodos de 'voluntad' se usan a menudo en lugar de should, es decir, pueden devolver un valor para cancelar la acción.

¿Hay algún contraejemplo?

+2

Creo que lo has volteado - "debería" debería devolver un booleano que le dice al remitente que proceda o no. ¿Te va a decir que sucederá y que hay algo que puedes hacer? Did te permite tomar acciones después de que sucedió. Mi $ 0.02 –

+0

Combino el uso de la voluntad y debería, así se llamará, pero con la opción de devolver NO si no desea que el cambio continúe. El método should no tiene sentido para mí. Es solo extra sobrecarga. –

+0

@DavidH que era mi comprensión inicial, sin embargo, el método 'UITableViewDelegate'' tableView: willSelectRowAtIndexPath' puede devolver un valor que cancela la selección. En otras palabras, realiza la responsabilidad de 'debería'. – ColinE

Respuesta

1

En caso de que los métodos siempre devuelvan un valor BOOL, y le indiquen el comportamiento actual de un objeto (pero nunca se invocan automáticamente). Serán los métodos son métodos de delegados que serán llamadas cuando un evento está a punto de suceder, como

-(void)applicationWillResignActive... 

y "sí" métodos también se delegan métodos que serán llamadas después de que el evento tuvo lugar, como appplicationDidFinishLaunching ...

+0

, ¿quiere decir que debería llamarse manualmente? – OMGPOP

+0

Es decir, siempre se deben llamar a los métodos para "preguntarle" si algo debe suceder o no. Por ejemplo, esta función - (BOOL) textField: (UITextField *) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString *) cadena; le permite decidir si los caracteres en ese rango deben cambiarse o no. El código en la función solo tomará esa decisión y devolverá SÍ o NO. –

Cuestiones relacionadas