【问题标题】:Class Accessibility Throughout Project整个项目的类可访问性
【发布时间】:2015-03-14 22:21:53
【问题描述】:

当我第一次开始做一个长长的 iOS 项目时,我需要一个在整个项目中都可以轻松访问的小类。起初我将它作为一个属性传递,它变得非常令人头疼。

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

所以,现在是晚些时候,我正在接近项目的发布,我想处理这个问题。它可以正常工作,但如果这是糟糕的做法,我想在发布之前修复它。

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

  2. 假设我需要这个类实例(它非常轻量级但被大量使用)在整个项目中都可以访问(可能总共大约 50 个 VC),那么除了通过 App Delegate 引用它之外,还有什么更好的选择?

用于 cmets 的 TIA。我希望它不会引发战争。

【问题讨论】:

    标签: ios appdelegate


    【解决方案1】:

    对此并没有硬性规定,并且有数百种意见。这是我的看法。

    我不明白为什么这是糟糕的做法。有时您只需要一个随时可用的课程,而这些似乎是获得它的好方法。但可能有一些我不理解的缺点。

    您有这种感觉是对的,是的,有时您需要一个随时可用的数据类。这很糟糕,因为它不应该如何使用AppDelegate。在理想的世界中,它不应该包含大量不相关的状态数据,并且应该服务于一个单一的目的:将系统调用委托给您的应用程序。诀窍是您将模型放在哪里,以便每个人都可以访问它?

    假设我需要这个类实例(它非常轻量但被大量使用)在整个项目中都可以访问(可能总共大约 50 个 VC),那么除了通过 App Delegate 引用它之外,还有什么更好的选择?

    使用singleton pattern 将您的状态放入一个类中。它将确保只创建一个副本,并且您的所有类都应该能够访问它。这是 iOS SDK 中公认的模式(NSUserDefaultsUIApplication 等)。请注意这个类变得太大或做太多事情。尽量保持简单和专注,面向对象的警察会让你一个人呆着。

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

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 2018-10-25
      • 2021-12-30
      • 1970-01-01
      • 2015-01-26
      • 2014-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多