2013-02-25 75 views
0

在我的iOS应用程序中,我需要访问AppDelegate中的一些数据。 所以我用这样的我需要在iOS的类中声明UIApplication SharedApplication多少次?

- (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]; 
} 

感谢您的帮助。

回答

2

是的,它是在你的类足够一次,如果你使用的是app为类级别声明ivar

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

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

+0

是的。我用iVar.So我需要申报一次,我可以在这个班的任何地方使用? thz :) – 2013-02-25 15:11:04

+1

欢迎您:)是的!接受答案如果有帮助 – nsgulliver 2013-02-25 15:11:30

+1

谢谢。我需要等10分钟才能打勾。 :) – 2013-02-25 15:12:46

1

另一种选择是在你的appdelegate.h文件来定义这个

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

只是一个速记。

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 
相关问题