我一直在这里和那里制作一些应用程序,我知道我的方式。让我困惑的是访问全局属性,以及设置它们的最佳位置。我有一些关于访问事物以及如何访问它们的问题。
您是否必须将应用程序委托头文件包含在要访问它的任何其他文件中?假设我有一个视图控制器,我想使用,我是否需要在视图控制器的.h中包含.h?或者我可以设置:
@class AppDelegate;
您是否只能通过输入以下内容来访问该委托:
[UIApplication sharedApplication].delegate
每次都是?这是我必须习惯的东西吗?或者我可以在每个.h中的实现中设置以下内容:
AppDelegate *delegate;
在init
函数中,将单例实例放到该变量中?
很抱歉,如果这是关闭结构,但我认为这是一个合乎逻辑的问题,人们遇到并解决了问题。
答案 0 :(得分:5)
也许您需要重新考虑如何使用App Delegate?听起来对我来说,也许你没有做出很好的课堂设计。
无论如何,这是一种让它变得简单的方法。不要把它放在init中,只需在需要时使用它。
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
当然,将MyAppDelegate替换为您的app delegate的实际类名。
答案 1 :(得分:0)
另一种可能性是添加代码以在app delegate头文件中使用正确转换的应用委托引用作为#define
,因此在包含它之后,您可以执行以下操作:
MYAPPDELEGATE.customProperty = blah;
然而,我倾向于只写出约翰提出的那条线,因为使用#defines会混淆代码完成,我觉得这比输入行更烦人。
如前所述,如果您对应用代表有大量的引用,您可能需要进行重组以使其中一些引用更接近家庭。