- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有这个代码库,我决定把它变成一个框架,以便在我 future 的应用程序中重用。
所以我继续为 Cocoa Touch Framework 创建了一个 Xcode 项目。
为了让事情简单化(和工作区无关,至少在我掌握框架的基础知识之前),我创建了一个“测试平台”iOS 应用程序,它嵌入/依赖于/链接到框架作为一个 其他目标到同一项目(不是一个单独的项目)。当然,我的想法是在添加或修改框架时使用此应用程序测试我的框架功能。
所以我的项目有两个目标:
...当然还有两个方案(每个方案构建一个):
我还在修改代码,使其在 iOS 和 macOS 上都能正常工作。警告:未找到目标“MyFramework (macOS)”的伞头,将不会生成模块映射。
此外,我还在修改代码,使其在 iOS 和 macOS 上都能正常工作。
所以我又添加了两个目标:
...aslo 设置,以便应用程序目标依赖、链接到并嵌入框架。
接下来,我决定进行一些清理和文件重新排列,以在文件数量开始进一步增长之前保持整洁和有意义。
经过反复试验,我发现了一些事情:
1) 如果我更改 iOS 框架的目标名称并尝试构建 iOS 应用程序,我会收到以下警告:
/Users/Me/Projects/MyFramework/Code/MyFramework/:1:1: Umbrella header for module 'MyFramework' does not include header 'PublicHeaderXX.h'
...对于包含在我的主 header 中的每个公共(public) header :
// In this header, you should import all the public headers of your framework
// using statements like #import <MyFramework/PublicHeader.h>
#import <MyFramework/PublicHeader01.h>
#import <MyFramework/PublicHeader02.h>
#import <MyFramework/PublicHeader03.h>
...
2) 如果我在build设置中更改 iOS 框架的产品名称,我会得到错误:
Lexical or Preprocessor Issue | 'MyFramework/MyFramework.h' file not found
...指向我在应用程序源代码中导入它的位置:
#import <MyFramework/MyFramework.h>
对于 Mac 框架目标,我可以更改目标名称,但如果我更改产品名称,我会收到警告:
Warning: no umbrella header found for target 'MyFrameworkMacRenamed', module map will not be generated
所以我问...
有没有办法为每个框架目标设置我想要的目标名称和产品名称?
我确定一定有什么地方我应该“修改以匹配”并消除一些差异,但我是框架的新手并且无法弄清楚......(什么是'伞头'无论如何?)
最佳答案
事实证明,“umbrella header”只不过是框架的“主” header ,它是在您首次创建项目或框架目标时由 Xcode 自动创建的,并且它必须与目标(如解释的那样,例如 here )。
至于为什么两个目标和产品必须命名相同,我只能猜测这与保持链接不太复杂有关(应用程序未“链接”反对',所以我想产品名称是任何你想要的都没有损害)。
我试图用单一 header 来控制所有(平台),使用 TargetConditionals.h 等来导入 Cocoa.h 或 UIKit.h,这是不可能的,因为Xcode 不允许您对两个目标使用相同的名称,并且它们必须与它们的 header 名称相匹配!
所以,我决定:
<MyFramework/MyFramework.h>
: 经典。接受无替代品。专为 iOS 和
<MyFrameworkMac/MyFrameworkMac.h>
: 现在也可在 Mac 上使用! - 来自为您带来 MyFramework 的人
关于ios - 更改框架的目标名称或产品名称时找不到伞头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39467844/
我创建了一个基于命令行可移植脚本的工业化不可知构建系统,可用于快速构建多个依赖项目,而不必依赖特定的 IDE 或构建工厂。它是不可知的,因为它不是基于单个构建引擎。我使用 cmake 创建了第一个版本
我最初使用 Java 目标开发了一个语法(用于 TestRig 支持),然后将其移植到 Python(从 git hub 语法存储库扩展了 Python3 语法,因此需要将操作移植到 Python
我有一个以 iPhone 和 watchOS 为目标的 Xcode 项目。 iPhone 目标使用加速度计,模拟器不支持。我可以只启动 iPhone 应用程序而不启动 watch 目标吗?我从: Ca
您好,我想创建一个批处理文件,用于在 .eml 文件(目标 A)中查找某些关键字,然后删除它们所在的行。之后,我需要批处理文件将"new"文件放入(目标 B)中的单独 .eml 文件中。文件也可以是
当尝试通过 IntelliJ 运行示例 CorDapp (GitHub CorDapp) 时,我收到以下错误: Cannot inline bytecode built with JVM target
我在尝试向我的 kotlin spring 项目添加一些依赖项时遇到问题。我使用 spring boot 初始化程序来运行一个基本项目。 我的问题:如果我取消对 jackson 或 Koin 依赖项的
这是有问题的网站: http://www.onepixelroom.com/londonrefurb 当我点击关于部分后面的多个圆圈时,我希望它更改上面文本中的引号。 到目前为止,我得到它来显示 文本
单击后,我将删除两个元素 $(this) 和 $("#foo")。 目前我的代码如下所示: $(this).remove(); $("#foo").remove(); 如何在不重复自己的情况下优化它?
我有一个小脚本,可将 Markdown 文件编译为 html,并将其与一些样式表和 javascript 一起插入到模板的主体中。我有一个 GNU makefile 来完成这个: output.htm
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
一些背景知识: 在android中我们开发了同样的应用,基本上我们先开发了Android应用,现在我们创建了它的IOS版本,所以这个应用有多个客户端。在 android 中,我们实际上是使用 Andr
我想知道是否可以使用 knockout 来更改html中的目标() 我的所有其他信息都在 JavaScript 中,所以这对我来说是一个大问题。这是我的 JavaScript: var library
这个问题在这里已经有了答案: Selecting and manipulating CSS pseudo-elements such as ::before and ::after using j
我在我的有向图中添加了一堆节点和顶点,使用设置 typedef boost::adjacency_list graph; 创建 Node有一个节点名称字符串,Edge它的分数有一个整数。我试图遍历所有
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
如何存储我在 NSUserDefaults 中创建的 Goal 类型的对象数组? ( swift ) 代码如下: func saveGoalList ( newGoalList : [Goal] ){
Array.prototype.indexOf 和 Date.now 已在 ES5 中引入。如果我编译存储在文件 test.ts 中的以下代码,为什么 Typescript 不能转译? Date.no
我正在阅读有关属性的内容,并了解到可以使用您的代码将它们应用于不同的目标实体 -(请参阅 Attribute Targets)。 因此,查看我项目中的 AssemblyInfo.cs 文件,我可以看到
给定一个 Makefile: all: build/a build/b build/c # need to change this to all: build/* build/a:
我有一个带有多框架目标的项目- netstandard2.0;net471 . 我想为 netframework 构建解决方案和 netstandard分别。 目前我使用这个 MSBuild 命令:
我是一名优秀的程序员,十分优秀!