Objective-C Language
Les méthodes
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çonparameterLabel:(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