将Framework和App Extension目标添加到IOS App项目中,我是否正确执行?

时间:2015-07-13 18:23:24

标签: ios swift frameworks cocoa-touch swift-custom-framework

我正在研究IOS / Swift开发,我想构建一个IOS应用程序,将来会有自己的今日扩展。我已经读过,最好将App和它的扩展之间的公共逻辑(例如访问Internet资源的逻辑,对结果执行某些工作等)放到自定义框架中。因为我认为我需要在开发App期间更改Framework和App代码,我想避免在单独的项目中构建框架,而不是使用Show In Finder函数来定位框架包,然后在App中拖放它项目..所以我想知道这是否是使用App设置工作区的正确方法,它使用的框架和App的今日扩展:

  1. 使用IOS应用目标创建新项目
  2. 在Project Navigator中选择项目,然后选择 Editor-> Add Target ... 并指定 Cocoa Touch Framework
  3. 编辑 - >添加目标... 并指定今日推广
  4. 在链接框架和库中添加框架
  5. 通过这种方式,我看到对Framework源代码的更改不需要进行Framework目标重新编译,可能是因为项目知道需要重新编译框架源代码,即使我只是构建&运行使用该框架的IOS App目标?我做得对吗?我已经看到以这种方式创建的Today Extension不会在 Build Phases - >中列出框架。在IOS应用程序执行时,目标依赖性,但是当我更新它时,它们都正确地使用了框架的更新代码。

    然后,当我编译项目时,我注意到以下警告,但我不知道它是否与我设置项目的方式有关:

    ld: warning: linking against dylib not safe for use in application extensions: /Users/gianni/Library/Developer/Xcode/DerivedData/TestFrameworkApp-dshihhfiuepeqzddbnpgnfwilhem/Build/Products/Debug-iphonesimulator/TestFramework.framework/TestFramework
    

    顺便说一下, Products 文件夹中的条目总是红色是正常的吗?这是因为我只为IOS模拟器构建,因为我没有允许我为IOS设备构建的付费开发者帐户?这是否阻止我构建一个可以为其他项目导出的框架,因为我无法通过右键单击框架产品并选择 Show In Finder 找到Framework包(所以我可以将它拖放到另一个项目中??

    我希望我已经足够清楚了,你会指出我正确的方向,以了解启动我的新项目的建议方式:)

1 个答案:

答案 0 :(得分:2)

听起来我觉得你走的是我要走的路。

关于您所看到的警告......我认为,当您尝试使用扩展中不允许的API时,检查共享框架的“仅限允许应用扩展API”将会产生这种情况并导致构建失败。

enter image description here