将现有的 iOS 应用项目拆分为静态库和应用皮肤项目

Posted

技术标签:

【中文标题】将现有的 iOS 应用项目拆分为静态库和应用皮肤项目【英文标题】:split an existing iOS app project into static library and app skin project 【发布时间】:2013-07-31 20:24:04 【问题描述】:

我想将现有的 ios 应用项目拆分为一个静态库和一个应用项目。

由于现有应用项目已多次复制到具有不同资源(图形、图标等)和设置的全新实例中。

我发现一旦核心项目更新,就很难跨不同的实例进行维护。

所以我将核心项目变成了一个包含模型、视图和第三方库的静态库。

另一个项目包含只包含自定义资源和应用设置的应用部分。

问题是静态库中的类如何从应用程序项目中获取应用程序设置以及主应用程序项目调用库中的类。

有什么好的做法和工具吗?

【问题讨论】:

【参考方案1】:

主应用项目可以通过导出的头 (.h) 文件使用您的静态库类。我建议在这里阅读一些关于它们的信息:

http://developer.apple.com/library/ios/#technotes/iOSStaticLibraries/Articles/creating.html

并在这里创建静态库:

http://www.icodeblog.com/2011/04/07/creating-static-libraries-for-ios/

至于为您的静态库提供特定于应用程序的设置,听起来您的静态库可能需要包含ApplicationSettings 协议或类似协议,可以将其提供给静态库以用于任何需要它的电话。您的协议可以为您的应用程序拥有的任何已知属性定义 getter/setter。

@protocol ApplicationSettings

- (BOOL)isUserReallyAwesome;
- (void)setIsUserReallyAwesome:(BOOL)awesome;

@end

然后你可以静态配置这个对象的一个​​实例,或者你可以提供给每个需要它的静态库方法:

- (void)someStaticLibraryMethodWithArg:(NSString *)arg settings:(id<ApplicationSettings>)settings  ... 

【讨论】:

使用 applicationSettings 是个好主意。我猜想获取图标和资源的方法相同吗?

以上是关于将现有的 iOS 应用项目拆分为静态库和应用皮肤项目的主要内容,如果未能解决你的问题,请参考以下文章

将现有的objective-c静态库转换为swift

如何将现有的 Angular1 Web 应用程序转换为 Cordova 应用程序?

是否值得将现有的 iOS 应用程序从 Phonegap 1.2 升级到 1.9?

将现有的移动应用程序从 Android Native(Java) 和 IOS Native(Swift) 迁移到 React Native

如何将现有的 AngularJS 2 Web 应用程序转换为 Cordova 应用程序?

如何将现有的 eclipse GWT 项目转换为动态 Web 项目?