Class 整个项目的可访问性
Class Accessibility Throughout Project
当我第一次开始从事一个较长的 iOS 项目时,我的第一个项目是需要一个小型的 class,以便在整个项目期间随时访问。起初我把它当作 属性 传来传去,它变得太让人头疼了。
因此,即使我在这里看到反对它的帖子,我还是在 AppDelegate 中创建了 class 并根据需要通过指向 AppDelegate 的指针访问它。那我以后再看。
那么,现在已经晚了,项目临近发布,我想处理一下这个问题。它工作得很好,但如果它是糟糕的做法,我想在发布前修复它。
我不明白为什么这是糟糕的做法。有时您只需要一个现成的 class,这些似乎是获得它的好方法。但可能有一些我不理解的缺点。
假设我需要这个 class 实例(它非常轻量级但使用频繁)在整个项目(可能总共大约 50 个 VC)中都可以访问,那么什么是好的替代方案只是通过 App Delegate 引用它?
TIA 征求意见。我希望它不会启动 war.
这个没有硬性规定,有成百上千的意见。这是我的看法。
I don't understand why it is lousy practice. Sometimes you just need a class that is readily available and these seems like as good a way as any to get it. But there could be some downside I'm not understanding.
你有这种感觉是对的,是的,有时你需要一个 class 随时可用的数据。这很糟糕,因为 AppDelegate
不应该这样使用。在一个理想的世界中,它不应该包含大量不相关的状态数据,并且应该服务于一个单一的目的:将系统调用委托给您的应用程序。诀窍是您将模型放在哪里以便每个人都可以访问它?
Assuming I need this class instance (it is very lightweight but heavily used) to be accessible throughout the project (probably about 50 VCs, total), what would be a good alternative to just referencing it via the App Delegate?
使用 singleton pattern 将您的状态置于 class 中。它将确保只创建一个副本,并且您的所有 classes 都应该能够访问它。这是 iOS SDK(NSUserDefaults
、UIApplication
等)中广为接受的模式。请注意这个 class 变得太大或做太多事情。尽量保持简单和专注,面向对象的警察会让你一个人呆着。
其他值得考虑的资源和意见:
- http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
- Is it a bad practice to use your AppDelegate as your Singleton?
- Is it good practice to use AppDelegate for data manipulation and Handling?
当我第一次开始从事一个较长的 iOS 项目时,我的第一个项目是需要一个小型的 class,以便在整个项目期间随时访问。起初我把它当作 属性 传来传去,它变得太让人头疼了。
因此,即使我在这里看到反对它的帖子,我还是在 AppDelegate 中创建了 class 并根据需要通过指向 AppDelegate 的指针访问它。那我以后再看。
那么,现在已经晚了,项目临近发布,我想处理一下这个问题。它工作得很好,但如果它是糟糕的做法,我想在发布前修复它。
我不明白为什么这是糟糕的做法。有时您只需要一个现成的 class,这些似乎是获得它的好方法。但可能有一些我不理解的缺点。
假设我需要这个 class 实例(它非常轻量级但使用频繁)在整个项目(可能总共大约 50 个 VC)中都可以访问,那么什么是好的替代方案只是通过 App Delegate 引用它?
TIA 征求意见。我希望它不会启动 war.
这个没有硬性规定,有成百上千的意见。这是我的看法。
I don't understand why it is lousy practice. Sometimes you just need a class that is readily available and these seems like as good a way as any to get it. But there could be some downside I'm not understanding.
你有这种感觉是对的,是的,有时你需要一个 class 随时可用的数据。这很糟糕,因为 AppDelegate
不应该这样使用。在一个理想的世界中,它不应该包含大量不相关的状态数据,并且应该服务于一个单一的目的:将系统调用委托给您的应用程序。诀窍是您将模型放在哪里以便每个人都可以访问它?
Assuming I need this class instance (it is very lightweight but heavily used) to be accessible throughout the project (probably about 50 VCs, total), what would be a good alternative to just referencing it via the App Delegate?
使用 singleton pattern 将您的状态置于 class 中。它将确保只创建一个副本,并且您的所有 classes 都应该能够访问它。这是 iOS SDK(NSUserDefaults
、UIApplication
等)中广为接受的模式。请注意这个 class 变得太大或做太多事情。尽量保持简单和专注,面向对象的警察会让你一个人呆着。
其他值得考虑的资源和意见:
- http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
- Is it a bad practice to use your AppDelegate as your Singleton?
- Is it good practice to use AppDelegate for data manipulation and Handling?