Objective-C Language
Métodos
Buscar..
Sintaxis
-
o+
: El tipo de método. ¿Instancia o clase?(): Donde va el tipo de retorno. ¡Usa void si no quieres devolver nada!
El siguiente es el nombre del método. Use camelCase y haga que el nombre sea fácil de recordar y comprender.
Si tu método necesita parámetros, ¡ahora es el momento! El primer parámetro viene justo después del nombre de la función como esta
:(type)parameterName
. Todos los demás parámetros se realizan de esta maneraparameterLabel:(type)parameterName
¿Qué hace tu método? ¡Ponlo todo aquí, entre llaves {}!
Parámetros del método
Si desea pasar valores a un método cuando se le llama, use parámetros:
- (int)addInt:(int)intOne toInt:(int)intTwo {
return intOne + intTwo;
}
Los dos puntos ( :
) separa el parámetro del nombre del método.
El tipo de parámetro va entre paréntesis (int)
.
El nombre del parámetro va después del tipo de parámetro.
Crea un método básico.
Así es como se crea un método básico que registra "Hello World" en la consola:
- (void)hello {
NSLog(@"Hello World");
}
El -
al principio denota este método como un método de instancia.
El (void)
denota el tipo de retorno. Este método no devuelve nada, así que entras en void
.
El 'hola' es el nombre del método.
Todo en el {}
es el código que se ejecuta cuando se llama al método.
Valores de retorno
Cuando desea devolver un valor de un método, coloque el tipo que desea devolver en el primer conjunto de paréntesis.
- (NSString)returnHello {
return @"Hello World";
}
El valor que desea devolver va después de la palabra clave return
;
Métodos de clase
Se llama a un método de clase en la clase a la que pertenece el método, no a una instancia de él. Esto es posible porque las clases de Objective-C también son objetos. Para denotar un método como un método de clase, cambie el -
a un +
:
+ (void)hello {
NSLog(@"Hello World");
}
Métodos de llamada
Llamando a un método de instancia:
[classInstance hello];
@interface Sample
-(void)hello; // exposing the class Instance method
@end
@implementation Sample
-(void)hello{
NSLog(@"hello");
}
@end
Llamando a un método de instancia en la instancia actual:
[self hello];
@implementation Sample
-(void)otherMethod{
[self hello];
}
-(void)hello{
NSLog(@"hello");
}
@end
Llamando a un método que toma argumentos:
[classInstance addInt:1 toInt:2];
@implementation Sample
-(void)add:(NSInteger)add to:(NSInteger)to
NSLog(@"sum = %d",(add+to));
}
@end
Llamando a un método de clase:
[Class hello];
@interface Sample
+(void)hello; // exposing the class method
@end
@implementation Sample
+(void)hello{
NSLog(@"hello");
}
@end
Metodos de instancia
Un método de instancia es un método que está disponible en una instancia particular de una clase, después de que la instancia haya sido instanciada:
MyClass *instance = [MyClass new];
[instance someInstanceMethod];
Así es como se define uno:
@interface MyClass : NSObject
- (void)someInstanceMethod; // "-" denotes an instance method
@end
@implementation MyClass
- (void)someInstanceMethod {
NSLog(@"Whose idea was it to have a method called \"someInstanceMethod\"?");
}
@end
Pase por el paso del parámetro valor
Al pasar por el valor del parámetro que pasa a un método, el valor del parámetro real se copia al valor del parámetro formal. Por lo tanto, el valor del parámetro real no cambiará después de regresar de la función llamada.
@interface SwapClass : NSObject
-(void) swap:(NSInteger)num1 andNum2:(NSInteger)num2;
@end
@implementation SwapClass
-(void) num:(NSInteger)num1 andNum2:(NSInteger)num2{
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}
@end
Llamando a los métodos:
NSInteger a = 10, b =20;
SwapClass *swap = [[SwapClass alloc]init];
NSLog(@"Before calling swap: a=%d,b=%d",a,b);
[swap num:a andNum2:b];
NSLog(@"After calling swap: a=%d,b=%d",a,b);
Salida:
2016-07-30 23:55:41.870 Test[5214:81162] Before calling swap: a=10,b=20
2016-07-30 23:55:41.871 Test[5214:81162] After calling swap: a=10,b=20
Pase por parámetro de referencia pasando
En el paso por referencia del parámetro que pasa a un método, la dirección del parámetro real se pasa al parámetro formal. Por lo tanto, el valor del parámetro real se cambiará después de regresar de la función llamada.
@interface SwapClass : NSObject
-(void) swap:(int)num1 andNum2:(int)num2;
@end
@implementation SwapClass
-(void) num:(int*)num1 andNum2:(int*)num2{
int temp;
temp = *num1;
*num1 = *num2;
*num2 = temp;
}
@end
Llamando a los métodos:
int a = 10, b =20;
SwapClass *swap = [[SwapClass alloc]init];
NSLog(@"Before calling swap: a=%d,b=%d",a,b);
[swap num:&a andNum2:&b];
NSLog(@"After calling swap: a=%d,b=%d",a,b);
Salida:
2016-07-31 00:01:47.067 Test[5260:83491] Before calling swap: a=10,b=20
2016-07-31 00:01:47.070 Test[5260:83491] After calling swap: a=20,b=10