首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >xcode4中框架和静态库的区别以及如何调用它们

xcode4中框架和静态库的区别以及如何调用它们
EN

Stack Overflow用户
提问于 2011-06-06 04:49:17
回答 2查看 54.8K关注 0票数 135

我对xcode和objective-c非常陌生。我想问一个非常基本的问题。

我看到在项目设置中“将二进制文件链接到库”时,从工作区中的其他项目导入的框架和库是有区别的。

第一个问题,为什么会有一个框架?为什么会有一个图书馆?我的库不能是一个框架吗?

然后,如何从.h文件中调用导入的静态库中的类?

我想一定有个前缀,但我找不到。"ProjName/Myclass.h“也不起作用。

请尽可能具体一点。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-18 01:57:18

与静态库相比,框架的最大优势是它们可以作为一种整洁的方式来打包已编译的库、二进制文件和任何相关的头文件。它们可以放到你的项目中(就像SDK的内置框架一样,比如基础和UIKit),它们应该(在大多数情况下)可以正常工作。

大多数框架都包含动态库;使用Mac Framework模板在Xcode中创建的框架将创建动态库。iPhone不支持动态框架,这就是为什么将可重用的iOS代码库作为静态库分发的原因。

静态库很好,但它们需要用户做一些额外的工作。您需要将项目链接到库,并且需要将头文件复制到项目中,或者通过在构建设置中设置适当的头搜索路径来引用它们。

所以:总而言之,我的观点是,分发你的库的最好方式是作为一个框架。要为iOS创建一个“静态”框架,基本上可以采用一个普通框架,并用编译好的静态库替换二进制文件。这就是我分发我的一个库Resty的方式,也是我打算将来分发我的库的方式。

您可能希望查看该项目中提供的Rakefile (如果您不知道,Rake是Ruby的Make等价物)。我有几个任务来编译我的项目(使用xcodebuild),并将它们打包为iOS的静态框架。您应该会发现这一点很有用。

或者,您可能希望使用these Xcode 4 templates来创建iOS框架。

更新2013年12月9日:这是一个流行的答案,所以我想我应该编辑一下,说我对库分发的首选已经改变了。对于任何第三方库,无论是作为消费者还是生产者,我的首选都是CocoaPods。我使用CocoaPods分发我的库,并提供一个带有头作为备用选项的预编译静态库。

票数 142
EN

Stack Overflow用户

发布于 2011-06-06 05:10:05

基本上,框架就是库,并为使用它们提供了一种方便的机制。如果你“深入”一个框架,它只是一个包含静态库和头文件的目录(在一些带有元数据的文件夹结构中)。

如果你想创建你自己的框架,你必须创建一个“静态库”,并以一种特定的方式打包它。请参阅this question

一般来说,平台上的框架用于可重用的行为,您可以将自己的代码“添加到现有框架中”。如果你想拥有一些特定的功能,你可能需要使用库(例如three20)并将其打包到你的应用程序可分发

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6245761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档