在原始iOS App和App Extension之间共享代码

Rub*_*Jr. 27 xcode ios ios-app-extension ios8-extension

在iOS应用和扩展应用之间共享课程

我想在我的应用和扩展应用中使用自定义类.如果我只是在主应用程序文件夹中有该类,则扩展程序不会接收它.我尝试制作它的副本并将其放入扩展文件夹,但我当然得到一个invalid redeclaration of [my class]错误.什么是最好的解决方案?它只是一个类,而不是多个资源.

Avt*_*Avt 42

什么都不应该复制.只需添加所需文件即可为您的扩展编译源代码:

在此输入图像描述

  • 谢谢你!这看起来很棒!这与创建框架相比如何? (2认同)
  • @RubenMartinezJr.创建框架不会单独为每个目标构建类.但会做一次并链接到每个目标. (2认同)
  • 此解决方案和框架之间的缺点是,实际上编译的类将同时位于“app”和“appex”扩展名中,从而增加了 IPA 文件的整体大小,因为存在重复。使用动态框架,您将无法支持 iOS7,但如果您仅针对 iOS8 构建产品,这是一种更好的方法,因为应用程序和扩展程序都将与同一个框架进行通信。 (2认同)
  • 似乎如果我在Compile Sources中包含ClassA.m并且ClassA依赖于ClassB和ClassC,我也需要包含ClassB.m和ClassC.m.如果返回的ClassB和ClassC具有依赖性,那么这可能会非常疯狂.任何能够解决这个问题的人,或者谁能告诉我,如果我错过了什么?谢谢! (2认同)

Duc*_*Duc 21

只需确保您要共享的文件在目标成员资格部分中打勾.

选择您的文件,打开右侧的实用工具面板,勾选目标成员资格下的相应目标.

在此输入图像描述

  • 只是为了提供更多的洞察力,以这种方式执行它也会自动将类添加到`Build Phases`下的`Compile Sources`. (3认同)

Pra*_*nam 5

嵌入式框架是在应用程序和扩展之间重用代码的好方法。将一些代码移到嵌入式框架将为我们提供一个很好的机会来围绕它编写一些单元测试。

请参阅使用嵌入式框架共享代码部分 https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW1


归档时间:

查看次数:

13175 次

最近记录:

7 年,1 月 前