我需要在iOS中的类中声明UIApplication SharedApplication多少次?

时间:2013-02-25 15:07:05

标签: ios cocoa-touch appdelegate

在我的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];
}

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

是的,您的课程中有一次足以声明您是否使用app作为班级ivar

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

如果您要将app声明为班级中的财产,则无需在每个方法中声明

答案 1 :(得分:1)

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

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

只是简写。

答案 2 :(得分:1)

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

@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