Nic*_*ari 2 xcode cocoa frameworks objective-c ios
我有这个代码库,我决定变成一个框架,以便在我未来的应用程序中重用.
所以我继续为Cocoa Touch Framework创建了一个Xcode项目.
为了让事情变得简单(和工作区出来的画面,至少直到我掌握框架的基础知识),我创建了一个"试验床"的iOS应用程序,嵌入/链接的框架/取决于作为一个额外的目标,以相同项目(不是一个单独的项目).当然,这个想法是使用这个应用程序来测试我的框架功能,因为我添加或修改它们.
所以我的项目有两个目标:
......当然还有两个方案(每个方案一个):
我也在修改代码,以便它可以在iOS和macOS上运行.警告:找不到目标"MyFramework(macOS)"的伞头,将不会生成模块图.
此外,我还修改了代码,以便它可以在iOS和macOS上运行.
所以我又增加了两个目标:
... aslo设置,以便应用程序目标 - 依赖,链接和嵌入框架.
接下来,我决定做一些清理并重新整理文件,以便在文件数量开始进一步增长之前保持整洁和有意义.
经过一些反复试验,我发现了一些事情:
1)如果我更改iOS Framework的目标名称并尝试构建iOS应用程序,我会收到以下警告:
/ Users/Me/Projects/MyFramework/Code/MyFramework /:1:1:模块'MyFramework'的Umbrella标题不包含标题'PublicHeaderXX.h'
...对于我的主标题中包含的每个公共标题:
// 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>
...
Run Code Online (Sandbox Code Playgroud)
2)如果我在Build Settings中更改iOS框架的产品名称,则会收到错误消息:
词法或预处理器问题| 找不到'MyFramework/MyFramework.h'文件
...指向我在应用源代码中导入它的位置:
#import <MyFramework/MyFramework.h>
Run Code Online (Sandbox Code Playgroud)
对于Mac框架目标,我可以更改目标名称,但如果我更改产品名称,我会收到警告:
警告:找不到目标"MyFrameworkMacRenamed"的伞头,将不会生成模块图
所以我问......
有没有办法为每个框架目标设置我想要的目标名称和产品名称?
我肯定必须有一些东西我应该"修改以匹配"并消除一些差异,但我是框架的新手,无法弄明白......(无论如何,什么是"伞头"?)
事实证明,"伞头"只不过是第一次创建项目或框架目标时由Xcode自动创建的框架的"主"头,它必须与目标具有相同的名称(如上所述)例如,这里).
至于为何双方的目标和产品我必须命名一样,我只能猜测它与保持链接不要太复杂(应用程序是不是"挂反对",所以我想有产品名称中没有损坏是什么你做想).
我试图通过单一标题来管理所有(平台),使用TargetConditionals.h等来导入Cocoa.h或UIKit.h,这是不可能的,因为Xcode不会让你使用相同的名字对于两个目标,那些必须匹配其标题的名称!
所以,我决定:
<MyFramework/MyFramework.h>:经典.不接受替代品.专属iOS,和
<MyFrameworkMac/MyFrameworkMac.h>:现在也可在Mac上使用! - 来自给你带来MyFramework的人
| 归档时间: |
|
| 查看次数: |
2945 次 |
| 最近记录: |