Iphone从AppDelegate访问属性值

时间:2011-03-03 02:10:14

标签: iphone objective-c

如何从someView控制器访问AppDelegate类的属性值,而不在视图控制器中创建委托的引用?

3 个答案:

答案 0 :(得分:51)

我不太清楚你的意思 - 有多种方法可以将你的应用程序委托中的信息传递给视图控制器,并且“不创建委托参考”这一短语不清楚。您的选择基本上是:

  1. 引用应用程序委托,并根据需要进行转换。您可以在视图控制器类中编写代码,如:
    id propertyValue = [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] myProperty];
  2. 创建视图控制器时传递属性。这需要视图控制器声明@property并使用@synthesize d,然后您可以让app delegate在视图控制器实例上设置属性。
  3. 这两个选项都不要求您将应用代理的副本保留为@property,但第一个确实会引用该代理一次。

答案 1 :(得分:19)

[UIApplication sharedApplication] .delegate

您还需要在视图控制器中包含app delegate头文件,并可能将id的委托类型转换为您的实际应用委托类。

#include "MyAppDelegate.h"

((MyAppDelegate *)[UIApplication sharedApplication].delegate).myProperty;

答案 2 :(得分:2)

[UIApplication sharedApplication].delegate;