小编Zen*_*ton的帖子

类X在<framework>和<application>中实现,将使用其中一个,其中一个是未定义的

我收到这个警告:

Class X is implemented in both <framework> and <application> one of the two will be used, which one is undefined
Run Code Online (Sandbox Code Playgroud)

这个警告在网络上有很多内容,但我没有发现任何可以解决我遇到的具体问题的内容.

脚本

我已经构建了MyFramework和MyApplication(作为MyFramework的测试/演示应用程序).

MyFramework使用CocoaPod(我将其称为CoolPod),我也想在MyApplication中使用它(并且假设MyFramework的消费者也是合理的).

我需要能够将MyFramework分发为.framework(用于封闭源代码).但是,这意味着MyFramework将CoolPod嵌入其编译库中.

现在当我将MyFramework和CoolPod导入MyApplication时,我得到了这个冲突(输出上面显示的警告),因为CoolPod的类已经包含在MyFramework的库中(因为嵌入了CoolPod).

所以我们有这个结构:

CoolPod -> MyFramework \
                        MyApplication
               CoolPod /
Run Code Online (Sandbox Code Playgroud)

我该如何避免这种冲突?

  • 有没有办法让我的MyApplication向MyFramework提供CoolPod?
  • 我是否必须通过MyFramework管理CoolPod的标题?

我曾考虑在MyApplication中包含CoolPod的头文件(但不包括它的lib),但这对于一个简单的案例来说似乎过于复杂.

非常感谢任何帮助,这实在是在阻止我.

谢谢,

靛青

ios ios-frameworks cocoapods

41
推荐指数
1
解决办法
9264
查看次数

如何在一个git仓库中拥有多个pod

上下文

我们正在开发一个大型软件平台,其中包括Android,Server,Web和iOS(以及其他人).为了使我们的所有代码保持最新状态,我们将它们全部保存在一个Master repo中(这非常重要,因为我们在所有平台上共享模型,因此提交可能会影响许多不同的平台).

为了处理iOS方面,我们决定将项目分解为模块化pod,以便我们可以轻松地在其他库(也包括pod)中共享它们,因此当我们发布时,我们的客户很容易将我们的api包含在其中他们现有的项目(即我们希望使用cocoapods结构获得cocoapods提供的所有好处).

为了实现这一目标,我已经为每个项目设置了私有规格仓库和pod规格.

tl; dr:我们有一个主git repo,它包含我们所有的代码(多个平台,包括多个不同的pod).我们希望保留此结构,但也能够从repo中的代码创建pod.

我遇到的问题是我可以找到的pod规范的所有文档说你必须使用这种格式:

spec.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => spec.version.to_s }

让我兴奋的唯一部分是我们的repo不仅包含一个pod(更不用说iOS代码了).

有可能做这样的事情:

spec.source = { :git => 'https://github.com/MyCompany/Master/MyCompanyCoreDir', :tag => spec.version.to_s }

我们非常感谢任何帮助

干杯

靛青

git objective-c ios cocoapods

11
推荐指数
1
解决办法
2157
查看次数

如何要求泛型类型使用协议中的特定类型实现通用协议

嗨,我在当前的项目中使用泛型.但是,我遇到了一个问题:

我需要一个通用函数foo<T>,以便能够使用特定类型获取符合通用协议的参数.

例如在Java中,我可以这样做:

public interface Proto<B> {
    public void SomeFunction()
}
public class SampleClass {
}
public class Conforms extends Proto<SampleClass> {
    @Override
    public void SomeFunction () {}
}
public class TestingClass {
    public void Requires (Proto<SampleClass> param) {
        // I can use param
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何Requires()在Swift中执行相同的功能?我知道你在Swift中使用typealias协议进行泛型.如何根据typealias?约束参数?

generics protocols ios swift

9
推荐指数
2
解决办法
9019
查看次数

标签 统计

ios ×3

cocoapods ×2

generics ×1

git ×1

ios-frameworks ×1

objective-c ×1

protocols ×1

swift ×1