0

私のiOSアプリでは、からいくつかのデータにアクセスする必要がありますAppDelegate。だから私はそのように使用しました

- (void)ViewDidLoad
{
    self.app = [[UIApplication sharedApplication] delegate];
    [self.app.arrayFromApp addObjects:self.myArray];
    [self.app loadSomething];
}

知りたい上記のコードを一度宣言するViewDidLoadと、このクラスのどこからでも(メソッド、変数など)にアクセスできますか?

または

からデータにアクセスする必要がある場合、すべてのメソッドでそのコードを宣言する必要がありますAppDelegateか?

例。

- (void)methodOne
{
 self.app = [[UIApplication sharedApplication] delegate];
 self.app.isTrue = self.isTrueOrNot;
}

- (void)methodTwo
{
 self.app = [[UIApplication sharedApplication] delegate];
 [self.app loadSomething];
}

ご協力いただきありがとうございます。

4

3 に答える 3

2

appはい、クラスレベルで使用しているかどうかを宣言するには、クラスで1回で十分です。ivar

 self.app = [[UIApplication sharedApplication] delegate];

appクラスのプロパティとして宣言する場合は、すべてのメソッド内で宣言する必要はありません。

于 2013-02-25T15:08:53.927 に答える
1

もう1つのオプションは、appdelegate.hファイルでこれを定義することです。

#define APPLICATION ((AppDelegate*)([UIApplication sharedApplication].delegate))

速記です。

于 2013-02-25T15:15:39.820 に答える
1

アプリを読み取り専用プロパティにして、遅延インスタンス化することをお勧めします。

@interface ViewController : UIViewController

@property (readonly, nonatomic) AppDelegate *app;

@end


@implementation ViewController

@synthesize app = _app;

- (AppDelegate *)app
{
    if (_app == nil) {
        _app = [[UIApplication sharedApplication] delegate];
    }
    return _app;
}
@end
于 2013-02-25T15:29:02.580 に答える