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

2023-12-02

我对 Xcode 和 Objective-C 很陌生。我想问一个非常基本的问题。

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

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

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

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

请尽可能具体。

Thanks


框架相对于静态库的最大优势在于,它们可以作为打包编译后的库二进制文件和任何相关标头的巧妙方式。它们可以放入您的项目中(就像 SDK 的内置框架一样,如 Foundation 和 UIKit),并且它们应该可以正常工作(大多数情况下)。

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

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

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

您可能想查看该项目中提供的 Rakefile(如果您不知道,Rake 相当于 Ruby 中的 Make)。我有一些编译项目的任务(使用xcodebuild)并将它们打包为 iOS 的静态框架。您应该会发现这很有用。

或者,您可能希望使用这些 Xcode 4 模板用于创建 iOS 框架。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xcode4中框架和静态库的区别以及如何调用 的相关文章

  • 如何检测 UIImage 的非透明部分何时与 UIImage 的另一个非透明部分接触

    我在完成一些我认为会容易得多的事情时遇到了困难 每当 UIImage 中图片的非透明部分接触 UIImage 中包含的图像的另一个非透明部分时 我试图运行一个方法 我举了一个例子来帮助进一步解释我的问题 正如您在上图中看到的 我有两个三角形
  • Objective-C 头解析

    我需要解析一些 Objective C 标头 我尝试过使用Doxygen并解析 XML 输出 但它不完全支持没有注释的 Objective C 标头 它会阻塞属性中定义的宏 请检查Doxygen 无法正确识别属性 https stackov
  • UITableView 给出空表,不加载数据

    当保存我的表的视图是主 第一个 视图时 一切正常 但是 当它不是第一个视图并且我切换到该视图时 我的表不会加载数据 并且我得到一个空桌子 使用 NSLog 我可以看出该程序是不调用 numberOfRowsInSection 和 cellF
  • 如何随机化 NSArray? [复制]

    这个问题在这里已经有答案了 假设我有一个 NSArray 里面有 50 100 个对象 如何将数组按随机顺序排列 有很多方法可以做到这一点 但大多数只涉及生成随机数 也许您可以使用 NSMutableArray 使用此技术 生成 0 到 4
  • 如何确定自定义 UINavigationItem.titleView 的大小/框架?

    创建自定义视图并将其分配给 navigationItem titleView 属性后 它的显示如下 自定义视图填充两个按钮之间的空间 因此 自定义视图并不以导航栏为中心 如何确定 titleView 属性中视图的框架 我想在导航栏中居中放置
  • iOS:GMail API - 通过电子邮件发送附件

    我能够成功发送没有附件的电子邮件 但是 当我尝试使用 GTLUploadParamaters 上传附件时 出现 501 错误 我尝试添加照片库中附件的 NSData 以及仅发送图像的 URL 在这两种情况下我都得到了同样的错误 Create
  • 有没有办法以编程方式选择 Segue 锚点?

    假设我有一个 Storyboard 其中包含一个包含按钮的视图 当用户按下此按钮时 会出现一个弹出窗口 因此 我需要使用 Xcode 将 Segue 拖动到按钮来设置锚点 然后执行使用标识符执行Segue 所以 我的问题是 有没有办法以编程
  • 快速从 appDelegate 中 popToRootViewController

    我试图从应用程序委托弹出到导航堆栈的根视图控制器 并且在将 obj c 中的内容转换为 swift 时遇到一些问题 obj c 中的工作原理 UINavigationController navigationController UINav
  • Objective-C 语法是什么,椭圆式点表示法? “……”

    我在 Joe Hewitt 的 Three20 源代码中注意到了这一点 而且我以前从未在 Objective C 中见过这种特殊的语法 甚至不知道如何在适当的谷歌搜索中引用它 来自 UITableViewDataSource TTSecti
  • 在 Objective C 中断言每个对象创建都成功是必要的吗?

    我最近阅读了Apple的示例代码MVC网络 http developer apple com library ios samplecode MVCNetworking 由 Apple 开发者技术支持大师 Quinn The Eskimo 撰
  • 学习目标-C。使用 Xcode 3.2.1。错误是什么:程序收到信号:“EXC_ARITHMETIC”

    我正在使用 Stephen Kochan 的优秀著作 Programming in Objective C 2 0 来学习 Objective C 我也是 Xcode 新手 到目前为止 我的所有练习都运行良好 但是当我运行第 153 页上的
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • iOS UITableViewCell需要按两次才能调用didSelectRowAtIndexPath

    我有一个 UITableView 有时需要您触摸它两次才能选择一个单元格 更多细节 仅当表格一直向上或一直向下滚动后才需要两次触摸 只需第二次触摸即可呼叫didSelectRowAtIndexPath 当表格以自然的 向上滚动位置 打开时
  • 在 UITableView 中设置滚动位置

    我有一个应用程序 其工作方式与 iPhone 的 联系人 应用程序的工作方式有些相似 当我们添加新的联系人时 用户将被定向到包含联系人信息的仅查看屏幕 如果我们从导航栏中选择 所有联系人 用户将导航到查看最近添加的联系人的所有联系人列表 我
  • 替代已弃用的 NSNibLoading 方法(loadNibFile:、loadNibNamed: 等)?

    我发现 NSBundle 中的 NSNibLoading 方法 NSBundle loadNibFile externalNameTable withZone NSBundle loadNibNamed owner NSBundle loa
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • 自动布局和ios5

    我正在使用故事板 我已经使用了自动布局 但它不适用于 ios5 并且会崩溃 所以我想删除它 但是 如何取消选中自动布局 但如果我取消选中自动布局 我如何为 iPhone 4 和 5 设置屏幕 Regards 您可以在 IB 中禁用自动布局
  • 使用反射的属性类型或类

    我想知道是否可以确定对象属性的类或原始类型 获取所有属性名称和值非常容易 所以答案 https stackoverflow com questions 2299841 objective c introspection reflection
  • 如何使用 ZBar 读取器的 scanCrop 属性?

    我正在使用 iPhone 的 ZBar SDK 来扫描条形码 我希望阅读器仅扫描特定的矩形而不是整个视图 为此需要将阅读器的 scanCrop 属性设置为所需的矩形 我很难理解必须设置的矩形参数 有人可以告诉我如果在纵向视图上它的坐标是 我

随机推荐

  • 核心数据不保存我的数据

    我使用核心数据来保存一些整数 速率 然后在上下文中调用 save HeartRateBeat beat HeartRateBeat heartRateWithHeartRate rate ofRecordTitle self recordT
  • 使用 Django 实现单点登录 (SSO) [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想使用 Django 为我们当前使用的多个应用程序实现单点登录 SSO 我如何使用 Django 来实现这个 我们正在使用 OpenAM http
  • 将 QWidget 渲染为 QImage 丢失 alpha 通道

    我有一个简单的 Qt 小部件 它是QLabel应用了简单的 CSS 样式 样式的重要部分是圆形边框 QString css border style solid border width 3px border radius 7px 它在屏幕
  • 反应js;映射数组后没有任何渲染

    我有一个输入 在用户插入文本后我想在按钮中显示每个单词button group 我拆分了句子并映射了返回的内容
  • 我应该使用哪种 java swing 布局

    我需要创建这个框架 我应该使用哪种布局 我正在考虑框或网格布局 但右侧的菜单将是一个问题 您的代码中有很多重复 我会分解每个部分 使其成为一个单独的组件 并专注于其单独的布局需求 主屏幕有 4 个主要区域 不包括菜单 我会用类似的东西Gri
  • 如何防止Mysql Connector/J转换DATE和TIME时区?

    我正在使用以下 DSN 连接到 mysql 服务器 jdbc mysql localhost my database useUnicode true characterEncoding utf 8 serverTimezone UTC 我遇
  • 反射类型没有方法

    我正在尝试在 Go 中使用反射 为什么这段代码没有列出方法 它列出了字段 这是问题所在吗 value interface 我不确定如何将通用结构 类 类型传递给函数 通常我只会传递一个对象 我对此完全陌生 我是一名 C 程序员 packag
  • 如何用 Objective-C 编写计时器?

    我正在尝试用 NSTimer 制作秒表 我给出了以下代码 nst Timer NSTimer scheduledTimerWithTimeInterval 0 001 target self selector selector showTi
  • 当我在tensorflow.keras中使用BinaryCrossentropy(from_logits=True)时,我应该使用什么作为目标向量

    我有一个多标签分类 其中每个目标都是由 1 和 0 组成的向量not相互排斥 为了清楚起见 我的目标是 0 1 0 0 1 1 到目前为止我的理解是 我应该使用二元交叉熵函数 正如本节中所解释的answer 另外 我明白了tf keras
  • 如何使用 Windows 计划任务运行 PHP 脚本?

    我已经在我的机器中安装了 localhost server 我需要使用 Windows 计划任务运行 php 脚本 如何在计划任务的 操作 选项卡中添加路径 配置脚本以在特定时间段运行 在系统上找到 php exe 可执行文件 并使用以下命
  • 在文本浏览器中实时显示 QProcess 输出

    我是 qt 开发的新手 我想将 QProcess 的输出实时传输到文本浏览器 我首先执行一个简单的 echo 命令 但程序的输出没有显示 我究竟做错了什么 QProcess p p start echo hye QByteArray byt
  • CSS中何时留出空间,何时不留出空间?

    这是可以的 没有空格 li highlight background FF9900 none repeat scroll 0 0 这不起作用 有空格 li highlight background FF9900 none repeat sc
  • 如何根据用户的选择动态生成SQL查询?

    这与以下问题是同一个问题 如何根据用户的选择动态生成SQL查询 唯一的区别是 我有兴趣看到也使用 Java JPA 可能是 EclipseLink 或 Hibernate 特定扩展 的解决方案 我需要创建一个 GUI 用户可以使用它选择多个
  • 获取错误的 FileChannel 大小

    我正在尝试获取其中包含的文件的大小assets 我正在使用一个FileChannel因为我需要一个FileChannel之后 文件myfile txt包含 7 个字节 这是我的代码 AssetManager amgr AssetFileDe
  • @Autowired 注释无法在 JUnit 类中注入 bean

    我的测试班 public class myTest extends TestCase Autowired BeanClass beanObject public void beanTest Classdata data beanObject
  • 循环依赖

    我有 2 个项目 项目 2 引用了项目 1 现在我需要在 Project 1 中引用 Project 2 但 vs net 抱怨循环依赖 有办法解决这个问题吗 绝对不 循环依赖是糟糕设计的表现 我并不是有意严厉 有一些方法可以解决这个问题
  • Gtk# 剪贴板复制/剪切/粘贴文件

    如何使用 Gtk 复制 剪切和粘贴文件到剪贴板 我见过的每个例子都只显示文本被放入剪贴板 如果有人有一个例子 我将不胜感激 如果您的应用程序在 Gnome Unity 上运行 您可以使用 x special gnome copied fil
  • 我可以将编译时策略的创建和使用位置分开吗?

    include
  • SQL IF SELECT 查询为空然后执行另一个查询

    我有一个定期返回 无 的查询 如果是这种情况 我想运行不同的查询 但我不知道执行此操作的方法 如果有人可以帮忙的话 这是我当前使用的代码 SELECT FROM cfg users JOIN cfg ash ON cfg users iUs
  • xcode4中框架和静态库的区别以及如何调用

    我对 Xcode 和 Objective C 很陌生 我想问一个非常基本的问题 我看到在项目设置中 将二进制文件链接到库 时 从工作区中的其他项目导入的框架和库存在差异 第一个问题 为什么要有框架 为什么会有图书馆 我的库不能成为一个框架吗