为什么我应该使用动态框架,而不是静态框架

时间:2018-01-29 08:11:35

标签: ios objective-c

我创建了一个包含框架目标和应用目标的项目。

在框架目标中,我创建一个名为MyButton的类继承UIButton类。

在app目标中,我使用stroryboard并在其上放置一个UIButton,现在我在界面中使用MyButton类。

问题是当我使用默认选项动态库设置框架目标的mach-o类型时,我可以构建并运行成功。 但是当我使用静态库选项更改mach-o类型时,我可以构建成功但运行失败。错误消息是“Interface Builder文件中的未知类MyButton。”

我很困惑,任何人都可以解释。

测试演示在这里。 https://github.com/george-luofz/Test_useFrameworkInXib.git

2 个答案:

答案 0 :(得分:1)

根据dasdom的回答, <TextBlock Tag="{DynamicResource somekEY}"> <TextBlock.Text> <PriorityBinding> <Binding Path="SomeProperty" /> <Binding Path="Tag" RelativeSource="{RelativeSource Mode=Self}" /> </PriorityBinding> </TextBlock.Text> </TextBlock> 实际上是一个目录,除了编译的二进制文件之外,还可以包含其他资源文件,如故事板,xib,图像等。
dynamic framework是根本不同的东西 - 它是一段中间格式的编译代码,必须最终与最终的应用程序可执行文件链接才能变得可用。它没有其他资源文件的占位符机制,也不像static framework那样分发。

利用dynamic framework的可能(但不是非常实用)的解决方法是序列化二进制资源并将其嵌入代码中(实际上变成了一个字节数组 - 最有可能是一个巨大的字节数组)。这将变得非常难以维护,并且每次二进制资源文件发生更改时都需要在代码中更新相应的反序列化数组。

答案 1 :(得分:0)

您不能在静态库中使用Storyboard。