Dès ma première vue charge mon contrôleur de localisation appelle -(void)locationFound
à son délégué, qui est [UIApplication sharedApplication].delegate
(mon AppDelegate) J'ai un protocole correspondant qui demande juste pour cette méthode un nécessaire locationFound.protocole Ajouté à ne pas enregistrer AppDelegate
J'ai une adhésion de protocole déclaré comme tant dans mon en-tête AppDelegate:
@interface ProgramAppDelegate : UIResponder <UIApplicationDelegate, LocationFoundProtocol>
Tout fonctionne très bien - - sauf que je reçois un avertissement lorsque j'attribue le délégué dans mon contrôleur de l'emplacement - comme ceci:
self.positioningBrain.positioningNetworkingDelegate = [UIApplication sharedApplication].delegate;
il me dit:
Assigning to 'id<LocationFoundProtocol>' from incompatible type 'id<UIApplicationDelegate>'
il semble que ce ne voit tout simplement pas e à mon AppDelegate est en fait conforme à mon protocole spécifié - même si elle est déclarée dans l'en-tête.
Y at-il une raison pour laquelle XCode enregistre cette différence? Je ne suis pas trop surpris que mon code fonctionne, car les protocoles devraient tous être sémantiques de toute façon, mais s'il y a une meilleure façon de le faire, j'aimerais savoir.
juste faire certains - avez-vous « ' #import « ProgramAppDelegate.h » ' » en haut de chaque fois que vous essayez de faire cette mission? –
Vous devez lancer '[UIApplication sharedApplication] .delegate', http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/doc/uid/ TP40006728-CH3-SW24 – Vervious