#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 对象的委托。它不是存放“东西”的一般地方。请参阅以下讨论:

What describes the Application Delegate best? How does it fit into the whole concept? Is it ok to place most logic and models in the appDelegate?

【讨论】:

【参考方案2】:

如果它是最近开始的项目,您的代表可能称为AppDelegate。要找出答案,您必须在您的项目中找到实现NSApplicationDelegateUIApplicationDelegate 的类(取决于您的目标平台)。

【讨论】:

这正是我需要的答案。谢谢!

以上是关于#define 为 AppDelegate的主要内容,如果未能解决你的问题,请参考以下文章

c语言define用法

#define 为 AppDelegate

将 nsstring 转换为宏(#define)[重复]

c 语言typedef 和 define的使用和区别

Swift 2 - 将objective-c #define转换为swift

define定义变量