Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 对于不同的目标,在同一个项目中有多个应用程序代理可以吗?_Ios_Cocoa Touch_Uiapplicationdelegate - Fatal编程技术网

Ios 对于不同的目标,在同一个项目中有多个应用程序代理可以吗?

Ios 对于不同的目标,在同一个项目中有多个应用程序代理可以吗?,ios,cocoa-touch,uiapplicationdelegate,Ios,Cocoa Touch,Uiapplicationdelegate,我参与了iOS应用程序的开发。让我印象深刻的第一件事是顶级项目中的多个应用程序委托,它有多个目标输出。我知道每个子项目都有自己的应用程序代理。我的团队成员告诉我,这些应用程序代理用于不同的目标,但它们的代码几乎相同,只是有些变量来自不同的类或子项目。在一个项目中有多个应用程序代理有哪些优点和缺点?如果应用程序代理中有实际不同的内容,那么这种结构很好。如果其中一些是相同的,考虑如何重构代码(这样你就不会有重复代码)。将公共代码放入超类是一种方法,但还有其他几种方法。因为子类化非常强大,所以通常最好

我参与了iOS应用程序的开发。让我印象深刻的第一件事是顶级项目中的多个应用程序委托,它有多个目标输出。我知道每个子项目都有自己的应用程序代理。我的团队成员告诉我,这些应用程序代理用于不同的目标,但它们的代码几乎相同,只是有些变量来自不同的类或子项目。在一个项目中有多个应用程序代理有哪些优点和缺点?

如果应用程序代理中有实际不同的内容,那么这种结构很好。如果其中一些是相同的,考虑如何重构代码(这样你就不会有重复代码)。将公共代码放入超类是一种方法,但还有其他几种方法。因为子类化非常强大,所以通常最好采用另一种方法(例如合成)

应用程序委托的一个问题是,它可能会影响您的资源——即,如果类名不同,那么当这些资源可能完全相同时,您可能会面临资源(例如NIB)的微小差异


基本经验法则:如果您发现自己面临重复代码,请找到一种避免重复该代码的方法,或者在已经重复的情况下删除该重复代码的方法。

是的,存在大量重复代码。我只是在复习代码。我还没有为appdelegate做任何子类化或超类化。因此,最好使用UIResponder类型的基类,比如普通的appdelegate,然后从基类中对appdelegate进行子类化,在重要的地方或者超越方法或者使用额外的变量。这就是我马上想到的。任何其他建议也受到欢迎。@用户,我只需从应用程序委托中合理地移开所有可能的东西:)考虑对子类的合成,并且可以通过查询应用程序的PLIST来动态地了解正在运行的应用程序。所以这个重复的代码是不必要的。如果你处于领导地位,只需告诉他们停止重复代码,并找出如何重组计划/目标。根据我的经验,所有这些特殊情况和重复代码通常都会成为维护的噩梦。我现在不知道它是怎么做到的,但我必须了解这一点。感谢您花时间解释。@用户好吧,一个组合示例(如果您甚至想将所有内容都保留在应用程序委托中)是,根据正在运行的应用程序的不同,应用程序委托的类型/类别会有所不同。因此,当您初始化应用程序委托时,应用程序委托可以确定它是哪个应用程序,然后根据正在运行的应用程序创建
MONApp1DataProvider
MONApp2DataProvider
。当然,它们要么采用相同的协议,要么有一个用于自定义行为的公共超类。@用户建议:这可能是一个很好的起点: