在原始 iOS 应用和应用扩展之间共享代码
Sharing code between original iOS App and App Extension
在 iOS 应用和扩展应用之间共享 class
我想在我的应用和扩展应用中使用自定义 class。如果我在主应用程序文件夹中只有 class,则扩展程序不会接受它。我尝试制作它的副本并将其放入扩展文件夹,但我当然会收到 invalid redeclaration of [my class]
错误。最好的解决方案是什么?它只是一个 class,而不是多个资源。
不应复制任何内容。只需添加所需的文件即可为您的扩展编译源代码:
只需确保要共享的文件在 目标成员 部分打勾。
Select你的文件,打开右边的工具面板,在Target Membership.
下勾选合适的目标
嵌入式框架是在应用程序和扩展之间重用代码的好方法。将一些代码移动到嵌入式框架将为我们提供一个很好的机会来围绕它编写一些单元测试。
应用程序扩展(小部件,今天)
App Extension
- 来自 iOS v8 - 是一个 packaged bundle
,它使用与 Containing App
不同的进程并且可以与 Host App
通信。它具有 .appex
文件扩展名,位于 PlugIns
文件夹中。类似于 CXTests
应用打包包
SpeedWidgetExtension.appex - 应用程序扩展包
- 共享数据 - 使用
App Group
[About]
- 分享代码
Target Membership
- 最简单的方法或用于 iOS v8 之前的版本,它允许您将文件添加到每个目标中。它增加了包的占用空间,因为这个文件将被复制到每个目标
Framework
- grouping/reusing 代码
的模块
Embedded framework
又名 Dynamic framework
- 共享通用代码库的最合适方式。请注意,要使用 Embedded framework
,您应该仅将其嵌入 Containing App
(并且 不要 在 App Extension
中添加此框架。如果您包含框架对于 App Extension
它将在 App Extension
包中具有相同的框架 - 框架将被复制)。有可能是因为@prath
[About]
//App Extension
LD_RUNPATH_SEARCH_PATHS = @executable_path/../../Frameworks
//It means that App Extension can uses Dynamic framework from Containing app
Static Framework
- link 可执行二进制代码。您可以 link 库仅供 Containing App
[Vocabulary]
在 iOS 应用和扩展应用之间共享 class
我想在我的应用和扩展应用中使用自定义 class。如果我在主应用程序文件夹中只有 class,则扩展程序不会接受它。我尝试制作它的副本并将其放入扩展文件夹,但我当然会收到 invalid redeclaration of [my class]
错误。最好的解决方案是什么?它只是一个 class,而不是多个资源。
不应复制任何内容。只需添加所需的文件即可为您的扩展编译源代码:
只需确保要共享的文件在 目标成员 部分打勾。
Select你的文件,打开右边的工具面板,在Target Membership.
下勾选合适的目标嵌入式框架是在应用程序和扩展之间重用代码的好方法。将一些代码移动到嵌入式框架将为我们提供一个很好的机会来围绕它编写一些单元测试。
应用程序扩展(小部件,今天)
App Extension
- 来自 iOS v8 - 是一个 packaged bundle
,它使用与 Containing App
不同的进程并且可以与 Host App
通信。它具有 .appex
文件扩展名,位于 PlugIns
文件夹中。类似于 CXTests
应用打包包
SpeedWidgetExtension.appex - 应用程序扩展包
- 共享数据 - 使用
App Group
[About] - 分享代码
Target Membership
- 最简单的方法或用于 iOS v8 之前的版本,它允许您将文件添加到每个目标中。它增加了包的占用空间,因为这个文件将被复制到每个目标
的模块Framework
- grouping/reusing 代码Embedded framework
又名Dynamic framework
- 共享通用代码库的最合适方式。请注意,要使用Embedded framework
,您应该仅将其嵌入Containing App
(并且 不要 在App Extension
中添加此框架。如果您包含框架对于App Extension
它将在App Extension
包中具有相同的框架 - 框架将被复制)。有可能是因为@prath
[About]
//App Extension LD_RUNPATH_SEARCH_PATHS = @executable_path/../../Frameworks //It means that App Extension can uses Dynamic framework from Containing app
Static Framework
- link 可执行二进制代码。您可以 link 库仅供Containing App
[Vocabulary]