我需要爲我的所有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];
如何聲明MyAppDelegate? –
@interface MyAppDelegate:NSObject。它只是實現UIApplicationDelegate協議。 –
Centurion
然後嘗試'id delegate = ...'來代替。 –