在我的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];
}
感谢您的帮助。
答案 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