Recherche…


Syntaxe

  • - ou + : Le type de méthode. Instance ou classe?

  • (): Où le type de retour va. Utilisez le vide si vous ne voulez rien retourner!

  • Suivant est le nom de la méthode. Utilisez camelCase et rendez le nom facile à retenir et à comprendre.

  • Si votre méthode a besoin de paramètres, le moment est venu! Le premier paramètre vient juste après le nom de la fonction comme ceci :(type)parameterName . Tous les autres paramètres se font de cette façon parameterLabel:(type)parameterName

  • Que fait votre méthode? Mettez tout ici, dans les accolades {}!

Paramètres de méthode

Si vous voulez transmettre des valeurs à une méthode lorsqu'elle est appelée, vous utilisez des paramètres:

- (int)addInt:(int)intOne toInt:(int)intTwo {
  return intOne + intTwo;
}

Les deux points ( : ) sépare le paramètre du nom de la méthode.

Le type de paramètre est entre parenthèses (int) .

Le nom du paramètre suit le type de paramètre.

Créer une méthode de base

Voici comment créer une méthode de base qui enregistre "Hello World" sur la console:

- (void)hello {
  NSLog(@"Hello World");
}

Le - au début dénote cette méthode comme une méthode d'instance.

Le (void) indique le type de retour. Cette méthode ne renvoie rien, donc vous entrez void .

Le 'salut' est le nom de la méthode.

Tout dans le {} est le code exécuté lorsque la méthode est appelée.

Valeurs de retour

Lorsque vous souhaitez renvoyer une valeur à partir d'une méthode, vous devez indiquer le type que vous souhaitez renvoyer dans le premier ensemble de parenthèses.

- (NSString)returnHello {
  return @"Hello World";
}

La valeur que vous voulez renvoyer va après le mot-clé return ;

Méthodes de classe

Une méthode de classe est appelée sur la classe à laquelle appartient la méthode, pas une instance de celle-ci. Ceci est possible car les classes Objective-C sont également des objets. Pour désigner une méthode comme méthode de classe, changez le - en un + :

+ (void)hello {
  NSLog(@"Hello World");
}

Méthodes d'appel

Appel d'une méthode d'instance:

[classInstance hello];

 @interface Sample
 -(void)hello; // exposing the class Instance method
 @end

 @implementation Sample
     -(void)hello{
        NSLog(@"hello");
      }
 @end

Appel d'une méthode d'instance sur l'instance actuelle:

[self hello];

@implementation Sample

     -(void)otherMethod{
       [self hello];
     }

     -(void)hello{
        NSLog(@"hello");
      }
 @end

Appeler une méthode qui prend des arguments:

[classInstance addInt:1 toInt:2];

 @implementation Sample
     -(void)add:(NSInteger)add to:(NSInteger)to
        NSLog(@"sum = %d",(add+to));
      }
 @end

Appeler une méthode de classe:

[Class hello];

 @interface Sample
 +(void)hello; // exposing the class method
 @end

 @implementation Sample
     +(void)hello{
        NSLog(@"hello");
      }
 @end

Méthodes d'instance

Une méthode d'instance est une méthode disponible sur une instance particulière d'une classe, après l'instanciation de l'instance:

MyClass *instance = [MyClass new];
[instance someInstanceMethod];

Voici comment vous en définissez un:

@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

Passage du paramètre valeur par passage

En passant par la valeur du paramètre passant à une méthode, la valeur réelle du paramètre est copiée dans la valeur du paramètre formel. La valeur réelle du paramètre ne changera donc pas après le retour de la fonction appelée.

@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

Appeler les méthodes:

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);

Sortie:

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

Pass par référence paramètre passant

En passant par référence de paramètre passant à une méthode, l'adresse du paramètre réel est passée au paramètre formel. La valeur réelle du paramètre sera donc modifiée après le retour de la fonction appelée.

@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

Appeler les méthodes:

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);

Sortie:

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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow