2013-02-16 1 views
1

OK, voici ma situation ...méthode d'instance ne se trouve pas - pour la propriété App délégué

Mon App délégué est déclaré comme suit:

@interface AppDelegate : NSObject <NSApplicationDelegate> 

@property (assign) IBOutlet NSWindow *window; 
@property (assign) ppDocumentManager* documentManager; 

Maintenant, à partir d'un autre endroit je m essayant d'accéder documentManager, comme ceci:

AppDelegate* de = (AppDelegate*)[[NSApplication sharedApplication] delegate]; 
ppDocumentManager* docs = [de documentManager]; 

Et, en haut du fichier , J'ai aussi ajouté @class AppDelegate; pour que le compilateur sache ce que signifie AppDelegate.

Et cela fonctionne bien.


Cependant, je continue à recevoir des avertissements:

Instance method '-documentManager' not found (return type defaults to 'id') 

Que dois-je faire afin d'éliminer tous les avertissements?

Répondre

2

OK, voici ce qui a fonctionné pour moi:

  • j'avais décidé d'utiliser @class AppDelegate; au début du fichier .m faisant usage de documentManager, afin d'éviter le risque de références circulaires.

Cependant, il s'est avéré que cela n'était pas nécessaire.

Je viens d'importer AppDelegate.h et tout vient en place.

Pheww ....

+0

Vous n'importerez pas de fichiers .m, donc pas de risque d'importation circulaire. De plus, @class ne dit rien au compilateur sur les méthodes et les propriétés de cette classe. –

+0

@FirozeLafeer C'est vrai. :-) –

0

J'ai eu le même problème et j'ai découvert qu'il venait d'avoir le appdelegate nommé « AppDelegate » et non pas un nom personnalisé comme « MyAppDelegate ». Renommez ma classe en "MyAppDelegate" et l'importation en "MyAppDelegate.h" a fait l'affaire.

Questions connexes