繁体   English   中英

如何在iOS 10 / Xcode 8 / Swift 3中子项目或定位多个等效的应用程序

[英]How to subproject or target multiple app equivalents in iOS 10 / Xcode 8 / Swift 3

自从我上一次为iOS开发以来已经有一段时间了。 我认为那是斯威夫特问世之前。 但是,这无关紧要。 我很好奇我会为雇主做的事情。

我们有一个利用GPS跟踪器的产品,除了一个Web应用程序外,我们现在还希望提供移动应用程序。 我已经创建了我们应用的Android版本。 为此,我使用了一个基础项目,其中实现了所有功能(例如功能1和功能2)。

然后,我创建了其他两个项目,这些项目将基础项目作为依赖项。 这两个项目是我的实际应用程序。 App类将覆盖基础应用程序类,该基础应用程序类具有两个抽象方法“ hasFunction1”和“ hasFunction2”,这两个方法均返回一个布尔值,我在基础应用程序中使用了该布尔值以提供某些功能。

我还可以轻松地让每个应用程序的App类在不同情况下返回类,因为这些类(例如,活动的子类)具有在基本项目中实现的基本功能,而app项目仅扩展或覆盖了某些功能。

现在,我想对iOS执行相同的操作,但这里有所不同。 您有直接转到特定类的Storyboard,我不知道是否应该创建多个项目(例如在android应用中),还是最好使用目标来代替。

你对此的看法如何? 请记住,我的应用程序几乎相同。 唯一的区别就是名称,有时App 1启用了App 2尚未(但将来可能会启用)的功能。

此类项目的最佳方法是什么? 我不知道如何在iOS中处理

更新

我只是有一个主意,我想听听您对此的看法:

  • 有一个协议,一个简单的协议,例如只有一个返回布尔值的方法
  • 在基类中,检查self是否正在实现协议,如果是,则在其上调用方法。 使用返回值确定功能是否可用
  • 创建多个目标,每个我的应用一个
  • 在每个目标中,为实现协议的基类创建一个扩展

在我的操场上进行了快速测试之后,这似乎可以按照我的预期进行,但是我仍然不确定是否应该创建一个框架,多个项目和/或只是不同的目标:/

在此处输入图片说明

我发现,基本上我有两个选择可以实现我想要的。 第一个是我在原始帖子的更新中已经提到的一个:

我可以创建一个协议,然后在核心中检查self是否是协议的实例,如果是,请在协议上调用方法。 然后在子项目中,我只为类创建一个扩展,该扩展现在实现了我的协议。

我发现的第二种方法是,我可以使用预处理器宏和/或环境变量。

我希望这个答案可以帮助其他与我有相同问题的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM