当前位置:  开发笔记 > 前端 > 正文

你能从iPhone上的静态库中引用Xib文件吗?

如何解决《你能从iPhone上的静态库中引用Xib文件吗?》经验,为你挑选了2个好方法。

在我的应用程序中,我目前将所有代码分成静态库,以便更轻松地为实际应用程序和代码的单元测试设置xcode项目目标.这个问题是我想把我的大部分xib文件放在静态库中,但似乎当我运行我的应用程序并尝试引用xib时它无法找到它,除非它包含在实际中应用程序的目标而不是静态库目标.静态库中是否可以包含xib文件和其他资源,这些文件可以被同一个库中的代码引用,如果是,如何?



1> Justicle..:

不可能,因为静态库与"捆绑"不同.

bundle是一个目录,可能包含各种文件,包括资源文件(xib),可执行文件和静态库.它作为一组单独的文件存在于文件系统中.

静态库是一个单独的文件,其中包含由库创建者链接在一起的类,代码和变量.它不"包含"其他文件,它本质上是编译代码的数据库.

虽然可以将xib的数据放在那里,但是Xcode无法知道它在那里,因为它将它们作为文件系统上的单个文件来查找.

在Mac OS中,您可以创建一个"框架",它本质上是一组代码,资源,设置等,可以由多个项目重用.但是,Apple似乎不支持为iPhone OS创建自定义框架.

捆绑包 https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

静态图书馆 http://en.wikipedia.org/wiki/Static_library


刚刚发现这一点,可能是有用的:http://landonf.bikemonkey.org/code/iphone/iPhone_Framework_Support.20081202.html

2> Justicle..:

回复评论(不适合评论框)

不用担心,上周我一直试图和你做同样的事情 - 我想把一个xibs的"框架",包含文件和.a libs发送到客户端而不给他们所有的源代码码.我也找不到用捆绑包做这件事的好方法.

无论出于何种原因,Apple对此都特别迟钝 - 在静态库(动态库足够公平)的情况下,我看不出它们是如此的原因.

我现在的解决方案是手动创建包含以下子文件夹的包文件夹"Foo":

    "include" - >将.h文件放在这里

    "res" - >将.xib文件放在这里

    "lib" - >包含"iphoneos"和"iphonesimulator"子文件夹,每个子文件夹都包含libFoo.a

然后将其压缩并发送给客户端.然后客户:

    随时随地解压缩包装.

    在资源组下添加"res"文件夹.

    更改以下目标设置:
    其他链接器标志= -Objc -lfoo
    标头搜索路径= /包括
    库搜索路径=/lib/$(PLATFORM_NAME)

我可以通过一些构建步骤自动化程序包创建,但客户端仍然有四个稍微繁琐的步骤来设置.


`-lfoo'只是"链接到库foo"的链接器标志.请参阅http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html.如果您发现此答案有用,请提前注册.
推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有