`

iOS开发中 workspace 与 static lib 工程的联合使用

    博客分类:
  • ios
 
阅读更多

iOS开发中 workspace 与 static lib 工程的联合使用

在iOS开发中,其实workspace的使用没有完全发挥出来,最近做了一些研究,也想把之前写过的代码整理下,因为iOS里面的布局方式,交互方式也就那么几种。所以,整理好了之后,更能快捷开发,而且能够形成积累。所以把常用的东西封装成lib文件。

我自己的实施过程如下,同时会穿插一些自己参考的文章的链接或者方法。主要参考链接:

http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/#set_the_installation_directory

1、新建一个文件夹,然后新建一个workspace, 将这个workspace放置在这个文件夹中,创建workspace的过程与创建工程类似。

如下是创建的截图:

2、在这个workspace中创建一个static lib 工程

3、在workspace中创建一个empty project

 

4、工程创建完成,后面就有很多事情要做了,配置工程,empty project能够使用 static lib中的代码。

首先,在empty project 中的Build Phases->Link Binary with Libraries 中添加 libTTStyles.a 

然后在 empty project 的Build Settings->User Header Search Paths 里面添加"$(BUILT_PRODUCTS_DIR)” 和“$(BUILT_PRODUCTS_DIR)/static_library_name”两个选项,才能在编译的时候搜索到相关的头文件

然后,在static lib工程的 Other Linker Flags 中添加-ObjC, -all_load, -force_load 这三个选项,至少添加前两个,不然会报错,

这个是Xcode里面的一个bug, Three20里面有这么一段代码:

1 #define TT_FIX_CATEGORY_BUG(name) @interface TT_FIX_CATEGORY_BUG_##name @end \
2 @implementation TT_FIX_CATEGORY_BUG_##name @end

就是为了解决,static lib中的category无法引用 的问题,添加了一个同名的空类。上面最开始的链接里面有这个问题的解答:

复制代码
The “User Header Search Paths” setting defines the headers available as quoted imports (eg “#import “MyLibraryClass.h”) while the “Header Search Paths” setting defines those headers available as bracketed imports (eg “#import ). I’ve found that Xcode will only autocomplete header names in the quoted form so I always add libraries to the user header search path even though, from my project’s perspective, they might be more appropriate as system level (angle bracketed) libraries.

When using a static library which includes categories we will also have to add the “-ObjC” flag to the “Other Linker Flags” build setting. This will force the linker to load all objective-c classes and categories from the library. If the library contains only categories “-all_load” or “-force_load” may be needed as well. See Technical Q&A QA1490 for a more detailed explanation of these settings.
复制代码

 

5、配置工程的编译选项,控制编译工程之间的依赖关系。

在,TTProject的 scheme manage里面添加之前建立的lib文件,编译TTProjects的时候,就会先编译 statib lib的内容,然后再编译自身工程

At this point Xcode should have detected this implicit dependency between our app’s project and the static library’s project and have automatically configured our schemes correctly. Unfortunately I haven’t found this to be the case in practice. Instead we will have to edit our current scheme and add the static library’s build target before our app’s build target.

 

总结:用这种方式来创建工程,最大的好处就是,每次每个项目的开发,都能有所积累,到后面,可以达到3--5天即可开发一个App的地步。

后面会把这套lib库开源出来,也是使用了很多第三方的代码,自己做了一些封装和吸收吧。加TT前缀的原因是,Three20那套里面有很多东西都不错。借鉴了一些。但是不像three20那样庞大,不重复造车吧。。

分享到:
评论

相关推荐

    创建WorkSpace方式的iOS多工程联合编译包含Static Library

    在iOS开发中,当多个工程项目需要共享同一份代码或资源时,使用WorkSpace是一个非常有效的方式。本教程将详细介绍如何通过创建WorkSpace实现iOS多工程的联合编译,并且包含一个静态库(Static Library)。 首先,...

    ios-workSpace,多工程联动,让APP变得简单.zip

    在iOS开发中,`workSpace` 是一个非常重要的概念,它是Xcode项目管理的一个高级形式。这个名为“ios-workSpace,多工程联动,让APP变得简单”的压缩包,显然是一个示例项目,它展示了如何利用workSpace来组织多个...

    在MDI程序中使用workspace和列表视图

    为了在MDI项目中使用这些功能,我们需要进行以下几个步骤: 1. **添加CJ60Lib支持**: - 首先,你需要下载并编译CJ60Lib工程。打开CJ60Lib的.dsw工作台文件,确保头文件和库文件路径正确。在编译设置中,确保`../...

    weibo_lib_workspace

    标题“weibo_lib_workspace”和描述“weibo_lib”暗示我们正在处理一个与微博相关的库或者开发环境。这个库可能是为了方便开发者与微博平台进行交互,例如获取数据、发布信息或者进行数据分析。"lib"标签进一步确认...

    IOS 静态依赖库代码实例Demo

    在iOS开发中,静态库(Static Library)是一种常见的代码复用方式,它可以将一组源代码编译成一个单独的库文件,供多个项目共享。本示例“IOS 静态依赖库代码实例Demo”旨在演示如何在Xcode的workSpace环境中创建、...

    张忻正丨B站-iOS工程模块化实践与优化

    标题“张忻正丨B站-iOS工程模块化实践与优化”中提到的关键词包括B站、iOS、工程模块化实践、优化。B站即哔哩哔哩,是中国知名的视频分享网站,拥有庞大的用户群体和丰富的内容生态,其中包括大量iOS应用的开发者...

    iOS中如何引用另一个工程的方法教程

    在iOS开发过程中,有时我们需要在一个项目中引用另一个工程的代码,以便重用功能或集成第三方库。本教程将详细介绍如何在Xcode中实现这一目标,让开发者能够更好地管理和利用现有资源。 首先,我们需要理解Xcode的...

    拆解Launcher中的WorkSpace实现左右滑动效果

    在Android开发中,Launcher是用户接触系统的第一个界面,它通常包含主屏幕(也称为工作区WorkSpace)和其他应用快捷方式。工作区的左右滑动效果是Android Launcher的一个核心功能,让用户能够轻松地在不同的主屏幕...

    H3C Workspace云桌面技术参考资料汇总集.rar

    05 H3C Workspace云桌面 云盘配置与使用指导 06 H3C Workspace云桌面 分布式存储配置指导 07 H3C Workspace云桌面 动态桌面池典型配置举例 08 H3C Workspace云桌面 安全管理指南 09 H3C Workspace云桌面 手工...

    workspace.code-workspace

    workspace.code-workspace

    Beginning iOS 14 Programming with Swift.pdf

    《Beginning iOS 14 Programming with Swift》是一本由Appcoda官方提供的原版英文iOS开发教程,适合使用Xcode 12、iOS 14以及Swift 5.3进行学习和开发的人士。本书详细地介绍了iOS应用的开发流程,从基础的Swift编程...

    Beginning iOS Programming with Swift AppCod非常优质的Swift iOS新手开发教程

    在Chapter 2和Chapter 3中,你将学习如何使用Xcode Workspace,并通过Interface Builder设计和连接用户界面。 【Swift Playgrounds】 Swift Playgrounds是一个用于初学者尝试Swift的交互式环境,可以在不需完整应用...

    eclipse中改变默认的workspace的方法

    **方法2:** 使用File菜单中的“Switch Workspace”选项可以快速切换到另一个已存在的workspace。 1. **打开Switch Workspace对话框**:点击“File”菜单中的“Switch Workspace...”。 2. **选择新的workspace**:...

    移动开发工程化实践——滴滴出行跨地域IOS构建优化与持续集成 共40页.pdf

    ### 移动开发工程化实践——滴滴出行跨地域IOS构建优化与持续集成 #### 背景概述 在当前移动互联网高速发展的背景下,移动应用尤其是像滴滴出行这样的大型平台面临着日益增长的技术挑战。如何有效应对多地域开发...

    如何在 Smulink 导入 WorkSpace 的数据

    为了方便在Simulink中使用,需要将时间和数据合并成一个二维矩阵。在MATLAB命令行窗口中选择`Data`数据,单击右键,在左侧插入一列,并将时间数据`t`粘贴进去。此时,`Data`变成了一个8×2的矩阵,其中第一列是时间...

    H3C Workspace云桌面产品配置指导书汇总集.rar

    12 H3C Workspace云桌面 校园空间配置与使用指导(教育场景) 13 H3C Workspace云桌面 虚拟应用配置指导(办公场景) 14 H3C Workspace云桌面 云盘配置与使用指导 15 H3C Workspace云桌面 vGPU配置指导 1

    CitrixWorkspaceApp.zip

    在 Citrix Workspace App 中,用户能够无缝地接入和使用各种企业级应用、数据和桌面,无论他们身处何处,只需一个统一的界面即可。这款应用支持多种操作系统,如Windows、MacOS、iOS和Android,确保跨平台的兼容性和...

    使用Eclipse开发GD32VF103的工程配置向导_V1.0.pdf

    ### 使用Eclipse开发GD32VF103的工程配置向导 #### 一、概述 本指南旨在介绍如何利用Eclipse集成开发环境(IDE)进行GD32VF103系列微控制器(MCU)的开发工作。GD32VF103是一款基于RISC-V架构的32位微控制器,具有...

    Workspace ONE与Office 365远程办公解决方案.pdf

    综上所述,Workspace ONE与Office 365的联合解决方案提供了强大的远程办公工具,包括安全的邮件服务、高效的文档处理、统一的用户体验和全面的数据保护。这种集成不仅简化了管理,也提升了员工的生产力,是现代企业...

Global site tag (gtag.js) - Google Analytics