すべてのUIViewControllerにメソッドをアタッチする必要があります。メソッドは、私の主なアプリケーションデリゲートクラスオブジェクトへのポインタを返します。ただし、xcode 4は、出力パラメータタイプMyAppDelegateの宣言で、ヘッダファイル内に「解析問題が発生しました」というエラーをスローします。私が他のタイプ(例えばid)に変更した場合、エラーは消えてしまいます。しかし、私は主なアプリケーションデリゲートのプロパティにアクセスするためのドット構文を使用しています。もしxcode4が主なアプリケーションデリゲートのプロパティを認識しない場合、型をidに変更します。私は、このメソッドにアクセスしている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;
}
編集:ここに私のカテゴリーの定義がある私は、このカテゴリを実装していた理由は、私は私のメインのアプリにアクセスするための便利なショートカットを持っている必要があるということです
// handy shortcut :)
self.appDelegate.someMethod;
//not so handy shortcut :(
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
MyAppDelegateはどのように宣言されていますか? –
@interface MyAppDelegate:NSObject。 UIApplicationDelegateプロトコルを実装するだけです。 –
Centurion
それから、代わりに 'id delegate = ...'を試してください。 –