2009-05-05 64 views
2

我一直在制作几个应用程序,我知道我的方式。总是让我困惑的是访问全局属性,以及设置它们的最佳位置。我有几个关于访问事物和如何访问它们的问题。最佳应用代表实践

您是否必须将您的应用程序委托头文件包含到您要访问的任何其他文件中?假设我有一个视图控制器,我想使用它,是否需要在视图控制器的.h中包含.h?或者,我可以设置:

@class AppDelegate; 

你能只通过键入进出委托:

[UIApplication sharedApplication].delegate 

每一次?那是我必须习惯的吗?或者,我可以设置我的实现在每个.H如下:

AppDelegate *delegate; 

而且init函数内部,把单实例变量?

对不起,如果这是结构,但我认为这是一个逻辑问题,人们遇到和解决问题。

+0

什么样的“全球属性”?这样的东西通常可以设计得更好,而无需一直访问应用程序委托或任何其他共享结构。 – zoul 2009-05-05 05:55:23

+0

我不是专门讨论应用程序委托,但说我有一个视图控制器,推动另一个,我想推动的东西都是从一个控制器到下一个。 – Garrett 2009-05-05 21:02:53

回答

5

也许您需要重新考虑您如何使用App Delegate?在我看来,也许你没有做出很好的课堂设计。

无论如何,这里有一个简单的方法。不要把它放在init中,只是在需要时使用它。

MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 

自然地,将MyAppDelegate替换为应用程序委托的实际类名。

0

另一种可能性是添加代码,使用正确铸造的应用程序委托引用作为应用程序委托头文件中#define,所以包括它之后,你可以这样做:

MYAPPDELEGATE.customProperty = blah; 

但是我倾向于赞成只是写出John提供的界限,因为#define的使用会混淆代码完成,而我觉得这比输入行更烦人。如上所述,如果您有大量的应用程序委托引用,您可能需要重新构建这些引用以使其中的某些引用更靠近家中。