gpt4 book ai didi

ios - 整个项目的类可访问性

转载 作者:行者123 更新时间:2023-11-29 02:13:13 26 4
gpt4 key购买 nike

当我第一次开始从事一个漫长的 iOS 项目(我的第一个项目)时,我需要一个可以在整个项目中轻松访问的小类。起初我把它作为一种属性(property)传递出去,这让我太头疼了。

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

所以,现在已经晚了,我即将发布该项目,我想处理这个问题。它工作得很好,但如果它是糟糕的实践,我想在发布之前修复它。

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

  2. 假设我需要这个类实例(它非常轻量级但使用频繁)在整个项目中都可以访问(总共可能大约 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.

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

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 将你的状态放入一个类中.它将确保只创建它的一个副本,并且您的所有类都应该能够访问它。这是 iOS SDK 中广为接受的模式(NSUserDefaultsUIApplication 等)。请注意这个类变得太大或做太多事情。尽量保持简单和专注,面向对象的警察会让你一个人呆着。

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

关于ios - 整个项目的类可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29054932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com