安装自定义 Cocoa 框架的最佳方法

2023-11-23

我有一个自定义框架,遵循 Apple 框架编程指南中的建议 >>安装你的框架我安装在/Library/Frameworks 中。我通过使用以下脚本添加运行脚本构建阶段来实现此目的:

cp -R  build/Debug/MyFramework.framework /Library/Frameworks

然后,在我的项目中,我链接到 /Library/Frameworks/MyFramework 并将其导入到我的类中,如下所示:

#import <MyFramework/MyFramework.h>

这非常有效,除了我总是在调试器控制台中看到以下消息:

将程序加载到调试器中... 共享库应用加载规则全部 警告:无法读取“/Users/elisevanlooij/Library/Frameworks/MyFramework.framework/Versions/A/MyFramework”的符号(未找到文件)。 警告:无法从“MyFramework”读取符号(尚未映射到内存中)。 程序已加载。

显然,编译器首先查看 /Users/elisevanlooij/Library/Frameworks,找不到 MyFramework,然后查看 /Library/Frameworks,找到 MyFramework 并继续其快乐的方式。到目前为止,这更像是一个烦恼,而不是一个真正的问题,但是当运行单元测试时,gdb 在(找不到文件)处停止并拒绝继续。我通过在运行脚本阶段添加额外的一行解决了这个问题

cp -R  build/Debug/MyFramework.framework ~/Library/Frameworks

但感觉就像用胶带粘住了一些本来就不应该被破坏的东西。我怎样才能解决这个问题?


在过去的几个月里,我学到了很多关于框架的知识,所以我正在重写这个答案。请注意我说的是安装框架作为开发工作流程的一部分.

安装公共框架(即将由多个应用程序或捆绑包使用的框架)的首选位置是 /Library/Frameworks[链接文本] 因为“此位置中的框架是编译器在编译时自动发现的”以及运行时的动态链接器。”[框架编程指南]。最优雅的方法是在构建设置的部署部分。

当您处理框架时,有时您确实希望在构建时更新框架,有时则不想。因此,我仅在发布配置中更改部署设置。所以:

  1. 双击框架目标以打开“目标信息”窗口并切换到“构建”选项卡。
  2. 在“配置”选择框中选择“发布”。
  3. 向下滚动到部署部分并输入以下值:

部署位置 = 是(单击复选框)

安装构建产品位置 = /

安装目录=/Library/Frameworks

安装构建产品位置充当安装的根目录。它的默认值是某个 /tmp 目录:如果您不将其更改为系统根目录,您将永远不会看到已安装的框架,因为它隐藏在 /tmp 中。

现在,您可以在调试配置中按照您喜欢的方式处理框架,而不会影响其他项目,当您准备好发布时,您需要做的就是切换到发布并进行构建。

Xcode 4 警告自从切换到 Xcode 4 以来,我的自定义框架遇到了许多问题。大多数情况下,它们在 GDB 中链接警告,这些警告不会真正干扰框架的实用性,除非运行内置单元测试时。我一周前已经向Apple提交了技术支持票,他们仍在调查中。当我得到一个可行的解决方案时,我会更新这个答案,因为这个问题已经证明非常受欢迎(1 kViews 和计数)。

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

安装自定义 Cocoa 框架的最佳方法 的相关文章

  • 如何更改 iOS 5 中 UITabBarItem 中文本的颜色

    iOS 5 中有更多外观控制 我们如何更改 UITabBarItem 文本颜色 从默认白色变为其他颜色 编辑 工作解决方案 UITabBarItem appearance setTitleTextAttributes NSDictionar
  • 如何在 Xcode 中自动增加内部版本号 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在这个网站上找到了很多解决方案和脚本 但在 Xcode 中增加构建号的最简单的解决方案是 转到 TARGETS 部分中的 Build P
  • swift 中 pch 的替代品是什么?

    我想知道可以用什么来代替 swift 中的 pch 有没有 pch 的替代方案或方法可以快速摆脱导入 这样我们就不需要对所有类都这样做 我不想一直随身携带 进口 swift 中 pch 的最佳替代品是什么 您无法在 swift 中定义 宏
  • UIBarButtonItem 按下后更改字体,在外观代理中指定

    我设置了UIBarButtonItem标题字体通过appearanceAppDelegate 中的代理 UIBarButtonItem appearance setTitleTextAttributes NSDictionary dicti
  • Xcode 8:使用 iOS 9.3 基础 SDK 编译?

    我在 Xcode 8 0 beta 8S128d 中将 iOS 应用程序升级到 Swift 3 0 我以为一切都已准备就绪 并将其上传到 iTunes Connect 当我点击 提交审核 时 它给了我一个包含 26 个错误的列表 每个嵌入式
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 如何将 NSMutableArray 添加到 NSMutableArray Objective-c

    我正在从 Java 切换到 Objective c 但遇到了一些困难 我已经搜索过这个问题但没有取得太大成功 我有一个存储 NSMutableArrays 的 NSMutableArray 如何向数组添加数组 您可以在数组中存储对另一个数组
  • Xcode11 编辑器(通过“将编辑器添加到右侧”)被禁用

    自从我升级到以来它一直在工作Xcode11 2 几天前注意到了它 现在它不允许我向布局添加编辑器 如同Xcode 11 中引入的编辑器更改 https www avanderlee com xcode xcode assistant edi
  • Mac OSX 10.7.4,Xcode 4.4.1,没有 头文件?

    我正在编写一个程序 它将使用 C 标准库的数组容器来保存一些对象 但是 每当我尝试在程序中包含以下代码行时 include
  • 将 NSAttributedString 的子字符串替换为另一个 NSAttributedString

    我想替换一个子字符串 例如 replace of an NSAttributedString和另外一个NSAttributedString 我正在寻找一种等效的方法NSString s stringByReplacingOccurrence
  • Symfony VS CakePHP:哪一个最接近 PHP [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我主要是一名 Rails 开发人员 但有时 我必须使用 PHP 进行编码 因为 stackoverflow com更喜欢可以回答的问题 我想知道
  • 如何使用 Swift 循环 Array> [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给我一个 循环遍历 的例子和解释array
  • Swiftui 应用程序在 iOS 14 / 15 上使用不同的 SearchBar (ViewModifier) 时崩溃

    我在 iOS 14 上使用 SwiftlySearch 在 iOS 15 上使用 searchable struct CompatibleSearchBarModifier ViewModifier Binding var text Str
  • 关闭子级后,父级 UIViewController 方向不应更改

    假设我有三个 UI 控制器 A B C A 是我的根控制器 在 ShouldAutoRotate 方法中我返回 YES 我从A到B呈现ModalView B gt 在ShouldAutoRotate方法中我返回Portrait 然后从B我向
  • 运行时警告 CLSUserDefaults 实施了两次

    在 cocoapod 源中使用 import 语法时 我在 pod 定义的类中看到了与下面类似的警告 但这是一个内部苹果类定义 CLSUserDefaults 我无法控制它 也不会进行子类化 我不知道这是否真的造成了问题 但它不应该发生 o
  • 可以转换为 Swift 5

    我在 Xcode 10 2 中收到此警告 可以转换为 Swift 5 当我单击此错误时 它会打开此窗口 当我们点击Next会发生什么 swift 的当前版本是 swift5 仅在 Xcode 10 2 中受支持 而您在 Xcode 10 2
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li
  • 如何获取多点触摸 UITapGestureRecognizer 的多个位置

    我的视图中有一个 UITapGestureRecognizer 我可以使用下面的代码很好地获取其触摸的位置 现在 如果我将此识别器的触摸次数更改为 2 或更多 它仍然会为我提供一个位置 如何获得两次触摸的两个位置 tapGesture lo
  • Xcode 不会在故事板中显示我的文本字段占位符文本

    当我在属性检查器中分配文本字段的占位符值时 它不会显示在故事板中 但是 当我运行应用程序的模拟器时 它就在那里 我缺少什么设置吗 我只想能够在编辑器中看到占位符文本 下面是 xcode 和模拟器之一的屏幕截图 我遇到了同样的问题 幸运的是我
  • 解析用户周围的位置

    您好 我开发了一个应用程序 我想问一个问题 在我的数据云解析中 我有 餐馆 类 我有三列 名称 类型字符串 imageFile 类型文件 description 类型数组和 Location 类型GeoPoint 我想知道使用哪种方法来获取

随机推荐

  • Python:如何获得两个连续分布的卷积?

    设 X Y 为 2 个随机变量 概率密度函数为 pdf 1 和 pdf 2 Z X Y 然后通过pdf1和pdf2的卷积给出Z的概率密度函数 由于我们无法处理连续分布 因此我们对连续分布进行描述并对其进行处理 为了找到均匀分布和正态分布的卷
  • 如何在 Laravel 中设置本地时区

    有没有办法在 Laravel 中设置本地时区 In 配置 应用程序 php timezone gt UTC 应该添加什么以便上面的时区值使用本地时区 经过一番研究 偶然发现了以下 PHP 处理方式 userTimezone Auth use
  • 指针向量的迭代器未正确取消引用

    这是我的问题 我有一个std vector
  • malloc() 如何导致 SIGSEGV?

    我的程序中有一个奇怪的错误 在我看来 malloc 导致了 SIGSEGV 据我的理解 这没有任何意义 我正在使用一个名为 simclist 的库来动态列表 这是稍后引用的结构体 typedef struct int msgid int s
  • C# 数据库交互简介

    到目前为止 在我的编程生涯 两年 中 我还没有太多的数据库经验 但我现在工作的公司在他们的产品中广泛使用数据库 我感觉落后了 所以我想知道如何最好地开始学习 C 的数据库交互 我读过有关 LINQ to SQL 和 ADO net 的内容
  • 无法加载文件或程序集“System.Web.Mvc”或其依赖项之一

    我在 Windows 2008 Server 上安装了这个新的 MVC 应用程序 当我运行本地主机时收到以下消息 我已经检查了 Bin 文件夹 并且可以确认 Systems Web MVC 在那里 文件的版本是2 0 50217 0 在 w
  • 将构面标签更改为 ggplot2 中的数学公式

    我想知道如何改变facet数学公式的标签ggplot2 d lt ggplot diamonds aes carat price fill density xlim 0 2 stat binhex na rm TRUE opts aspec
  • 未捕获的类型错误:$(...)[index].hide/show 不是函数

    我正在为我的网站创建 jQuery 搜索脚本 但出现以下错误 Uncaught TypeError index hide is not a function search js 9 Uncaught TypeError index show
  • 来自内容脚本的桌面通知

    我试图从内容脚本显示一个简单的桌面通知代码 但它似乎不起作用 我已在 maifest json 文件中添加了权限 从内容脚本中显示它们是否有限制 您无法直接通过内容脚本显示通知 但是你can通过背景页面向他们展示 Your 清单 js应该看
  • 允许 GridView 与 SliverAppBar 重叠

    我正在尝试从早期的材料设计规范中重现以下示例 开放用于动画演示 到目前为止 我已经能够产生滚动效果 但内容的重叠仍然缺失 我不知道如何正确地做到这一点 import package flutter material dart class H
  • ASP.NET MVC 默认路由可通过区域路由访问

    到目前为止 为简洁起见 我在 global asax 中注册了一条路由 如下所示 routes Add new LowercaseRoute action id new MvcRouteHandler Defaults new RouteV
  • 相当于 IE8、IE7 及更早版本浏览器的 div 显示内联块

    这是关于跨浏览器兼容性的一个相当普遍的问题 在设计的各个阶段 我目前正在研究实现我想要的布局和风格 不诉诸使用图像 的唯一方法是使用display inline blockCSS 样式选项 然而 IE8 和其他旧版浏览器不支持这一点 这导致
  • 一个 ViewModel,多个视图

    我很难让多个视图针对 1 个视图模型工作 我读过了多视图支持的命名约定并没有从中得到太多 并且在这个过程中尝试了无数的事情 举一个简单的例子 假设我有一个位于 ShellViewModel 中的 People ViewModel 它基本上包
  • 在 Silverlight 3 中获取运行时程序集

    我目前正在编写一个框架 dll 其中有一个 AssemblyHelper 该帮助程序存储运行时和用户添加的程序集以轻松实例化新对象 该框架的 NET 部分使用 AppDomain MyDomain AppDomain CurrentDoma
  • windows.h 和 MFC

    为什么我不能将 windows h 包含在 afx MFC 项目中 通常 MFC 应用程序代码包括afx h or afxwin h 后者包括前者 前两行windows h are ifndef WINDOWS define WINDOWS
  • 公钥加密如何工作[重复]

    这个问题在这里已经有答案了 我对 RSA 的理解是 Alice 可以创建公钥和私钥组合 然后将公钥发送给 Bob 然后鲍勃可以使用公钥加密某些内容 而爱丽丝将使用公钥和私钥组合来解密它 但是 Alice 如何加密要发送给 Bob 的内容 鲍
  • Apache - 如何限制文件的最大下载速度? (如果不是apache,我可以运行lighthttpd)

    我有很多视频 但我只想将这些文件的最大下载速度限制为 1mbps 我该如何设置 最好在 Apache 中 但 lighthttpd 是一个选项 thanks 如果您只想限制每个连接的下载速度 而不考虑管理总数或执行更细粒度的控制 那么处理此
  • MySql 单表,选择最近 7 天并包含空行

    我在 stackoverflow 上搜索了类似的问题 但我不明白如何使这项工作 我正在尝试做什么 因此 我想从数据库中获取最近 7 天的交易并获取总销售额 如果某天没有数据 还包括空行 到目前为止我所拥有的 http sqlfiddle c
  • Angular-CLI 和 ThreeJS

    我一直在尝试添加适当的 npm 依赖项 以将三个依赖项添加到我的 Angular CLI 项目中 过去几个月 CLI 变化如此之快 我一直找不到工作源 这里有一些想法 搭载脚本 这是我的第一次尝试 简单地添加到index html 文件 但
  • 安装自定义 Cocoa 框架的最佳方法

    我有一个自定义框架 遵循 Apple 框架编程指南中的建议 gt gt 安装你的框架我安装在 Library Frameworks 中 我通过使用以下脚本添加运行脚本构建阶段来实现此目的 cp R build Debug MyFramewo