Junior — Middle
Explique le fonctionnement des pointeurs de fonctions en prenant comme exemple une fonction qui contient une autre fonction à l'intérieur.
sobes.tech IA
Réponse de l'IA
En iOS (Swift ou Objective-C), la notion de pointeurs de fonctions est implémentée via des closures ou des blocks. En langage C, sur lequel est basé Objective-C, les pointeurs de fonctions permettent de passer des fonctions en tant que paramètres ou de les stocker pour un appel.
Exemple en C avec une fonction qui contient une autre fonction à l’intérieur (via une fonction imbriquée ou une fonction retournant un pointeur):
#include <stdio.h>
// En C, il n’y a pas de fonctions imbriquées, mais on peut retourner un pointeur vers une fonction
int innerFunction(int x) {
return x * x;
}
int (*outerFunction())(int) {
// Retourne un pointeur vers innerFunction
return &innerFunction;
}
int main() {
int (*funcPtr)(int) = outerFunction();
int result = funcPtr(5); // appel à innerFunction via un pointeur
printf("Résultat: %d\n", result); // Résultat: 25
return 0;
}
En Swift, on peut utiliser des closures:
func outerFunction() -> (Int) -> Int {
func innerFunction(x: Int) -> Int {
return x * x
}
return innerFunction
}
let funcPtr = outerFunction()
print(funcPtr(5)) // 25
Ainsi, les pointeurs de fonctions permettent de choisir et d’appeler des fonctions de manière dynamique, ce qui est utile pour les callbacks et la programmation fonctionnelle.