Метод экземпляра не найден — для свойства App Delegate

Хорошо, вот моя ситуация...

Мой делегат приложения объявлен следующим образом:

@interface AppDelegate : NSObject <NSApplicationDelegate>

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

Теперь из другого места я пытаюсь получить доступ к documentManager, например:

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

И в начале файла я также добавил @class AppDelegate;, чтобы компилятор знал, что означает AppDelegate.

И это прекрасно работает.


Однако я продолжаю получать предупреждения :

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

Что мне делать, чтобы убрать все предупреждения?


person Dr.Kameleon    schedule 16.02.2013    source источник


Ответы (2)


ОК, это то, что сработало для меня:

  • Я решил использовать @class AppDelegate; в начале файла .m, используя documentManager, чтобы избежать риска циклических ссылок.

Однако оказалось, что это было не нужно.

Я только что импортировал AppDelegate.h и все встало на свои места.

Фууу....

person Dr.Kameleon    schedule 16.02.2013
comment
Вы не будете импортировать файлы .m, поэтому нет риска циклического импорта. Кроме того, @class ничего не сообщает компилятору о методах и свойствах этого класса. - person Firoze Lafeer; 16.02.2013
comment
@FirozeLafeer Это правда. :-) - person Dr.Kameleon; 16.02.2013

У меня была такая же проблема, и я обнаружил, что это произошло из-за того, что делегат приложения назывался «AppDelegate», а не какое-то пользовательское имя, например «MyAppDelegate».

Переименуйте мой класс в «MyAppDelegate», и импорт в «MyAppDelegate.h» помог.

person user2346927    schedule 03.05.2013