我有一个奇怪的问题。我正在尝试将两个项目(一个iOS和一个tvOS,两者都混合使用objective-c和Swift)合并到一个新的单个xcode项目中,以便他们可以共享代码。
我创建了一个新项目,创建了一个iOS目标和tvOS目标,并带来了所有的iOS代码,很快就编译好了iOS目标。当我从之前的iOS项目中获取所有代码时,我将所有文件设置为只能被iOS目标访问。
然后我对tvOS代码做了同样的事情,再一次只设置了tvOS目标可以访问的文件。
因为这两个代码库都非常相似,所以有很多重复的类,但随着时间的推移,它们会略有不同。最终我的目标是统一这些,但是现在我只需要将所有代码放在同一个地方。所以我有相同名称的类,我希望只有相关目标才能访问的文件才能解决这个问题,但它只能解决这个问题。
在迁移所有代码之后,iOS目标(我在开始使用tvOS代码之前就已经开始工作)仍在编译,但是,tvOS目标却没有。它失败了应该只能被iOS目标访问的错误,因为已经使用了类名和方法('类的重复接口定义'和类似的错误)。
所以我真的不明白这里发生了什么 - 为什么tvOS目标可以访问仅适用于iOS目标的代码,而不是相反?我该怎么做才能解决这个问题? (除了将所有代码包装在#if Target_OS_ios中之外)。
另外一件事,tvOS目标似乎只能访问来自iOS目标的objective-c文件,没有任何错误出现在任何swift类中。不确定这是否相关。