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班级级别ivar

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

app如果您在类中声明为属性,则不需要在每个方法中声明它

于 2013-02-25T15:08:53.927 回答
1

另一种选择是在您的 appdelegate.h 文件中定义它

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

只是一个简写。

于 2013-02-25T15:15:39.820 回答
1

我建议将 app 设为只读属性并懒惰地实例化它。

@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 回答