【发布时间】:2015-04-10 01:04:03
【问题描述】:
我正在开发 iOS 8 扩展。我阅读了许多手册,所有这些都只是展示了如何简单地为您的应用添加扩展,并且似乎已经足够了。
但这里有很多陷阱:
添加扩展后,您需要将一些类导入到添加新扩展目标时创建的视图控制器。您需要将所有这些都添加到这里的大用途,如果您有大型项目,这不是一项简单的任务。解决方案可以选择扩展目标,然后在 Build Phases -> Compile Sources 按加号按钮并使用热键 CMD+A 将所有 .m 文件添加到目标。
添加所有文件后,您可以看到某些方法不起作用,并且您会看到此错误:
'sharedApplication' is unavailable: not available on iOS (App Extension)所以解决方案可以是检查ifndef Extension的宏,然后我们可以调用sharedApplication代码.#import <Foundation/Foundation.h>与#import <UIKit/UIKit.h>。所以我还没有弄清楚这个问题,但是当我用UIKit替换Foundation时,它对我有用,所有相关问题都消失了。- CocoaPods。我们所有人都在使用 CocoaPods,所以如果您的扩展需要使用项目代码的某些部分并且该代码使用 CocoaPods 库,那么您需要将
link_with 'ProjectTarged', 'ExtensionTarget'添加到 Pod 文件并再次创建pod install以将您的库与新的扩展目标绑定.
所以这是我面临的一个要点。也许有人可以建议如何解决这个问题,正如我所说,我只是将一个需要的文件导入到扩展视图控制器。导入的文件包含一些库,如 AFNetworking、RestKit 和主项目中的其他嵌套类。我需要这个类来调用一些方法,将数据从扩展传递到我的后端服务器。所以一个文件,但有很多问题。
【问题讨论】:
-
您要解决的问题是什么?你列出了一堆陷阱,但听起来你已经知道如何处理它们了。
-
@TomHarrington 我预计应用程序和扩展程序之间可能存在一些提供程序,并且您根本不需要导入标头,所以就像您的应用程序目标中有一个可以跟踪某些事件的类扩展名,例如执行一些操作,而不是导入和添加所有文件,您只需在两个目标之间使用类似适配器的 smth
标签: ios ios8 cocoapods ios8-extension ios8-share-extension