Affectation à ‘id ‘ du type incompatible ‘ViewController * const_strong’

Tout au long de mon application, je reçois des avertissements sémantiques lorsque je configure ViewController.delegate = self . J’ai cherché et trouvé des messages similaires, mais aucun n’a pu résoudre mon problème.

ViewController.m:

 GameAddViewController *gameAddViewContoller = [[navigationController viewControllers] objectAtIndex:0]; gameAddViewContoller.delegate=self; 

Je reçois le message d’erreur lors de la définition de .delegate=self .

GameAddViewController.h:

 @protocol GameAddViewControllerDelegate  - (void)gameAddViewControllerDidCancel:(GameAddViewController *)controller; - (void)gameAddViewController:(GameAddViewController *)controller didAddGame:(Game *) game; @end @interface GameAddViewController : UITableViewController  { sqlite3 *pitchcountDB; NSSsortingng *dbPath; } @property (nonatomic, strong) id  delegate; ... @end 

ViewController.h:

 #import "GameAddViewController.h" @class ViewController; @protocol ViewControllerDelegate  - (void)ViewControllerDidCancel:(ViewController *)controller; @end @interface ViewController : UIViewController  -(void) checkAndCreateFile; @end 

Quelqu’un peut-il me diriger dans la bonne direction pour résoudre les messages d’avertissement?

A cette ligne:

 gameAddViewContoller.delegate=self; 

Notez que self est de type ViewController qui n’est PAS conforme au protocole GameAddViewController .

Pour moi, ce qui s’est passé, c’est que je n’ajoutais pas le délégué à l’interface de mon fichier d’en-tête.

Par exemple

 @interface TheNameOfYourClass : UIViewController  @end 

Vous placez le au mauvais endroit. Il ne va pas sur GameAddViewController, il va sur ViewController.

Cela pourrait aider d’autres personnes qui ajoutent la connectivité multipoint directement à un ViewController. En haut de myViewControllerName.h, ajoutez ‘‘:

 @interface myViewControllerName : UIViewController 

aussi, si vous définissez votre délégué à xx.m, mais que vous l’utilisez dans une autre classe. vous pouvez avoir ce problème. alors, il suffit de mettre le protocole définir sur xx.h, quand il est nécessaire.