domingo, 24 de marzo de 2013

Creación de métodos en Objective-C

Creación de Metodos en Objective-C.



Vamos a repasar un poco la creación de métodos en Objective-C:




Un metodo en Objective-C es lo que en otros lenguajes se suelen llamar funciones.

Los métodos pueden crearse que no devuelven nada :     -(void)nombreMetodo;


Si devuelve algún valor se pone entre paréntesis su tipo : -(NSString *)nombreMetodo;


Si no devuelve nada pero recibe parámetros: -(void)nombreMetodo: (NSString *) parámetro;


Si devuelve un valor y recibe parámetros: -(NSInteger)nombreMetodo:(NSString*)parámetro;


Si recibe varios parámetros:
-(NSString*)nombreMetodo:(NSString*)datoUno otroDatoMas:(NSInteger)datoDos yOtroDatoMas:(BOOL)datoTres; 


Así se podría crear un método que recibiese múltiples datos, notese que entre:  datoUno y otroDatoMas hay un espacio.


los métodos que empiezan por el signo  - son métodos de instancia y los que empiezan por el signo + son métodos de clase.

Aqui pongo un ejemplo del uso de métodos y su forma de llamarlos.





Contenido del archivo de encabezado ViewController.h:


//
//  ViewController.h
//  Metodos
//
//  Created by Francisco on 24/03/13.
//  Copyright (c) 2013 Francisco. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property NSInteger numeroUno,numeroDos,numeroTres,total;
@property (nonatomic,strong) NSString * nombreUno,* nombreDos,* nombreTres,* nombreCuatro;
@property (strong, nonatomic) IBOutlet UILabel *mostrarTexto;

-(NSInteger)metodoQueRecibeDosVariablesNumericas:(NSInteger)valorUno segundoParametro:(NSInteger)valorDos;
-(void)metodoQueNoDevuelveNada;
-(void)metodoQueRecibeUnParametro:(NSString*)parametro;
-(NSInteger)metodoQueDevuelveUnParametro;
-(void)metodoQueRecibeVariosParametros:(NSString*)parametroUno aquiVaElParametroDos:(NSInteger)parametroEnteroDos aquiVaElTercerParametro:(NSString*)tercerParametroTexto;

- (IBAction)verMetodoUno:(id)sender;
- (IBAction)verMetodoDos:(id)sender;
- (IBAction)verMetodoTres:(id)sender;
- (IBAction)verMetodoCuatro:(id)sender;

@end


Contenido del archivo de implementación ViewController.m


//  ViewController.m
//  Metodos
//
//  Created by Francisco on 24/03/13.
//  Copyright (c) 2013 Francisco. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

-(NSInteger)metodoQueRecibeDosVariablesNumericas:(NSInteger)valorUno segundoParametro:(NSInteger)valorDos
{
    //Este metodo recibe dos parametros numericos tipo NSInteger y los multiplica devolviendo con el return el valor de la multiplicacion.
    // Y asigna los valores recibidos a dos variables enteras, para poder usarlas fuera del metodo.
    _total= valorUno * valorDos;
    _numeroDos = valorUno;
    _numeroTres = valorDos;
   
    return _total;

}

- (void)metodoQueNoDevuelveNada
{
   //Este metodo, hace algo, pero no devuelve ningun valor.
    
    _mostrarTexto.text = @"Este texto es de el metodo que no devuelve nada";
}

- (void)metodoQueRecibeUnParametro:(NSString *)parametro
{
    //Este metodo recibe un parametro de texto y lo muestra en la etiqueta.
    _mostrarTexto.text = parametro;
}
-(NSInteger)metodoQueDevuelveUnParametro
{
    //En este metodo vamos a devolver un valor NSInteger que es un valor numerico
    //Para ello llama al metodo que recibe dos parametros numerico y que nos devuelve el resultado multiplicado. 
    [self metodoQueRecibeDosVariablesNumericas:154 segundoParametro:43];
    _numeroUno = _total;
   
    return _numeroUno;
}
-(void)metodoQueRecibeVariosParametros:(NSString *)parametroUno aquiVaElParametroDos:(NSInteger)parametroEnteroDos aquiVaElTercerParametro:(NSString *)tercerParametroTexto
{
    //Este metodo recibe varios parametros dos de texto y uno numerico.
    _mostrarTexto.text = [NSString stringWithFormat:@"%@ ,Parametro Numerico: %i , %@",parametroUno,parametroEnteroDos,tercerParametroTexto];
}

 //aqui podemos ver las llamadas a los metodos al pulsar cada boton.

- (IBAction)verMetodoUno:(id)sender
{
    [self metodoQueNoDevuelveNada];
}

- (IBAction)verMetodoDos:(id)sender
{
    [self metodoQueDevuelveUnParametro];
     _mostrarTexto.text = [NSString stringWithFormat:@"Valor de multiplicar: %i x %i %i",_numeroDos,_numeroTres,_numeroUno];
}

- (IBAction)verMetodoTres:(id)sender
{
    [self metodoQueRecibeUnParametro:@"Parametro recibido de texto"];
}

- (IBAction)verMetodoCuatro:(id)sender
{
    [self metodoQueRecibeVariosParametros:@"Parametro de Texto" aquiVaElParametroDos:108 aquiVaElTercerParametro:@"Tercer Parametro tambien de texto"];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


Hay que recordar que la UILabel o etiqueta donde se muestra el texto la he llamado: mostrarTexto y que hay que conectar la etiqueta y los botones con su correspondiente IBOutlet e IBAction para que funcione en tu XCode.















Espero les guste y les sirva para algo si alguien queiere que esplique algo determinado que me ponga un comentario con su petición.
Saludos.