Bonjour,
Je rencontre parfois dans des exemples de programmes proposés par Apple des codes de ce genre:
où la classe "RootViewController" est une classe spécifique qui hérite de UITableViewController et l'objet navigationController est une instance de la classe UINavigationController.
Code : Sélectionner tout - Visualiser dans une fenêtre à part RootViewController *rootViewController = (RootViewController *)[navigationController topViewController];
Je ne comprends pas à quoi correspond la déclaration "(RootViewController *)" située juste après l'opérande " = ".
S'agit-il d'une déclaration qui "force" le résultat du message envoyé à "navigationController" pour que ce résultat soit une instance de la classe "RootViewController" au lieu d'être une instance de "UIViewController"? Le cas échéant, je ne comprends pas très bien l'intérêt: si le topViewController de n'est pas une instance de RootViewController, qu'est ce que le runtime va bien pouvoir faire?...
S'agit-il d'un test de conformité de type avant affectation au pointeur *rootViewController? Mais je pensais que ce type de test était de toute façon réalisé lors de l'affectation, non?
S'agit-il uniquement d'une information à destination du compilateur pour qu'il n'émette pas d'avertissement lors de la compilation du code (sur l'éventuelle différence de type)?
J'ai beau googlisé, passer en revue toute FAQ qui me tombe sous la main, et me refaire moultes passes sur la doc Apple, je ne trouve pas d'explications sur ce sujet... Si qqun peut éclairer ma lanterne, je suis (très) preneur... Merci d'avance pour toute aide!
Olive
Partager