Class 整个项目的可访问性

Class Accessibility Throughout Project

当我第一次开始从事一个较长的 iOS 项目时,我的第一个项目是需要一个小型的 class,以便在整个项目期间随时访问。起初我把它当作 属性 传来传去,它变得太让人头疼了。

因此,即使我在这里看到反对它的帖子,我还是在 AppDelegate 中创建了 class 并根据需要通过指向 AppDelegate 的指针访问它。那我以后再看。

那么,现在已经晚了,项目临近发布,我想处理一下这个问题。它工作得很好,但如果它是糟糕的做法,我想在发布前修复它。

  1. 我不明白为什么这是糟糕的做法。有时您只需要一个现成的 class,这些似乎是获得它的好方法。但可能有一些我不理解的缺点。

  2. 假设我需要这个 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(NSUserDefaultsUIApplication 等)中广为接受的模式。请注意这个 class 变得太大或做太多事情。尽量保持简单和专注,面向对象的警察会让你一个人呆着。

其他值得考虑的资源和意见: