Мне нужно прикрепить метод ко всем моим UIViewControllers.Метод просто возвращает указатель на мой основной объект класса делегата приложения.Однако xcode 4 выдает ошибку «проблема синтаксического анализа, ожидаемая типом» в заголовочном файле при объявлении типа выходного параметра MyAppDelegate.Если я изменю его на другой тип, например, id, то ошибка исчезнет.Но я использую точечный синтаксис для доступа к основным свойствам делегата приложения, и если я изменю тип на id, то xcode4 не распознает мои основные свойства делегата приложения.Я включил файл определения категории в те файлы классов UIViewController, где я получаю доступ к этому методу.Вот определение моей категории:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "MyAppDelegate.h"
@interface UIViewController (MyCategory)
-(MyAppDelegate *) appDelegate; // xcode 4 complains about MyAppDelegate type, though it autocompletes it and show even in green color.
@end
Вот реализация:
#import "MyCategory.h"
@implementation UIViewController (MyCategory)
-(MyAppDelegate *)appDelegate{
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
return delegate;
}
РЕДАКТИРОВАТЬ: причина, по которой я реализую эту категорию, заключается в том, что мне нужно иметь удобный ярлык длядоступ к моему основному делегату приложения из любого места кода (в моем случае из объектов UIViewControler):
// handy shortcut :)
self.appDelegate.someMethod;
//not so handy shortcut :(
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];