当我第一次开始研究一个长期的iOS项目时,我的第一个,我需要一个在整个项目中随时可访问的小班。起初我把它作为一个财产传递过来,这让我感到非常头疼。
所以,即使我在这里看过帖子提出反对意见,我在AppDelegate中创建了该类,并根据需要通过指向AppDelegate的指针访问它。然后,我稍后会再次访问它。
所以,现在是时候了,我正在接近发布该项目,我想处理这个问题。它的工作原理很好,但如果它很糟糕,我想在发布前修复它。
我不明白为什么这是糟糕的做法。有时候你只需要一个随时可用的课程,这些课程似乎和任何课程一样好。但是可能有一些缺点我不理解。
假设我需要这个类实例(它非常轻量但很常用)可以在整个项目中访问(可能大约有50个VC),那么只需通过App Delegate引用它就是一个很好的选择。
TIA征求意见。我希望它不会发动战争。
答案 0 :(得分:1)
没有严格的规则可以为此提供数百条意见。这是我的看法。
我不明白为什么这是糟糕的做法。有时候你只需要一个随时可用的课程,这些课程似乎和任何课程一样好。但是可能有一些缺点我不理解。
你觉得这样是对的,有时你需要一个随时可用的数据。这很糟糕,因为不应该使用AppDelegate
。在理想的世界中,它不应包含大量不相关的状态数据,并且应该用于单一目的:将系统调用委派给您的应用程序。诀窍在于你将模型放在何处,以便每个人都可以访问它?
假设我需要这个类实例(它非常轻量但很常用)可以在整个项目中访问(可能大约有50个VC),那么通过App Delegate引用它会有什么好的选择?
使用singleton pattern将您的州置于课程中。它将确保只创建一个副本,并且所有类都应该能够访问它。这是iOS SDK(NSUserDefaults
,UIApplication
等)中广为接受的模式。只要注意这个课程变得太大或做太多事情。尽量保持简单和专注,面向对象的警察会让你一个人呆着。
值得考虑的其他资源和意见: