#define 为 AppDelegate
Posted
技术标签:
【中文标题】#define 为 AppDelegate【英文标题】:#define for AppDelegate 【发布时间】:2012-09-13 14:33:23 【问题描述】:我阅读了post 以使用宏来引用 AppDelegate。我想知道我应该用什么来代替(MyOwnAppDelegate*)
#define AppDelegate ((MyOwnAppDelegate*)[[UIApplication sharedApplication] delegate])
【问题讨论】:
如果您必须在代码中的其他地方引用 AppDelegate - 您很可能做错了什么。 为什么这样做是错误的?从其他所有课程(spaghetti code)中引用它当然不是一个好习惯。但你不能在任何情况下都避免它。 你能描述一个你不应该避免的情况吗?唯一想到的东西真的很古怪(比如你需要主要的UIWindow
,但你还没有在视图层次结构中)。除此之外,应用程序委托不应持有其他任何人关心的太多东西。
我需要我的数据是全球性的。这就是我将它存储在 AppDelegate 中的原因。否则我需要创建另一个单例类。有没有更好的办法?
通常您应该创建一个或多个单独的模型类来保存您的数据。您可以将模型保存在单例中(PersonManager
甚至只是 Model
),或者您可以在应用程序委托中创建***模型并将其交给第一个视图控制器。这就是基于文档的应用程序的工作方式,但适用于所有类型的应用程序。创建另一个单例没有问题,但应用程序委托不适合使用。这使得代码很难重用。
【参考方案1】:
如果您经常引用UIApplicationDelegate
以至于您需要一个特殊的宏,那么您引用它的频率太高了。应用程序委托是主UIApplication
对象的委托。它不是存放“东西”的一般地方。请参阅以下讨论:
【讨论】:
【参考方案2】:如果它是最近开始的项目,您的代表可能称为AppDelegate
。要找出答案,您必须在您的项目中找到实现NSApplicationDelegate
或UIApplicationDelegate
的类(取决于您的目标平台)。
【讨论】:
这正是我需要的答案。谢谢!以上是关于#define 为 AppDelegate的主要内容,如果未能解决你的问题,请参考以下文章