Cómo agregar métodos a las clases existentes en el desarrollo de aplicaciones ios

Curiosamente, Objective-C le permite añadir sus propios métodos para existente clases en una aplicación para iOS, incluso aquellas clases que no se han escrito. Adición de métodos adicionales para una clase es útil en una situación en la que se utiliza el nuevo comportamiento sólo en ciertas situaciones.

A modo de ejemplo, puede encontrarse con que una aplicación en particular (por ejemplo, un corrector palíndromo) tiene que invertir casi cualquier cadena a la que está tratando con!

Podría hacer que su programa demasiado complicado para crear su propia subclase de NSString con el método inverso adicional. Más bien, puede que le resulte más conveniente añadir el nuevo comportamiento de la clase original. ¿No sería agradable si usted podría agregar un método inverso al NSString sí mismo!

Tenga en cuenta que no se puede modificar la interfaz o aplicación NSString original, ya que es una clase de marco y que no tiene el código fuente. Sin embargo, se puede extender la clase NSString (o cualquier otra clase) mediante la definición de una nueva categoría. En el archivo de PostfixAll.m verá que la clase NSString se ha ampliado con un llamado método inverso de la siguiente manera:

@interface NSString (ReversibleString) - (NSString *) revertir - d

Como se puede ver, la definición de una categoría es muy similar a la definición de una interfaz para una clase. De hecho, proporcionando una implementación para los métodos de una categoría también es muy similar a la que proporciona la implementación de una clase en la que los métodos están encerrados en un bloque de @implementation.

Se puede ver el bloque de aplicación para la categoría (que incluye el código para el método inverso) a continuación (en el archivo PostfixAll.m):

@implementation NSString (ReversibleString) - (NSString *) revertir {NSMutableString * reversedString = [[NSMutableString alloc] init] -INT StringLength = self.length-for (int i = StringLength-1- i gt; = 0- i -) {NSString * oneCharString = [auto substringWithRange: NSMakeRange (i, 1)] - [reversedString appendString: oneCharString] -} retorno reversedString -} - d

Finalmente, el utilizar de un método definido en una categoría no es diferente de la utilización de cualquier otro método, como puede verse en el siguiente fragmento de código tomada de la función principal de PostfixAll.m:

 NSLog (@"Impresión invierte stringgt;% @ lt;", [AStringObject inversa]) -
Artículos Relacionados