前言

hihi,勇敢的小伙伴儿们大家好,好久不见!之前我写过一篇“多target开发”内容的文章,当时是第一次看见同事大哥哥用多target这种方式实现项目多地区的开发,大大地提高工作效率,在有限的开发时间内出色地完成了多个App的开发,这让我不禁心生敬佩,所以对此进行了小小研究。原来iOS的世界中我还有那么多不足,那么多未知世界需要去探索...

今天来跟大家分享的是同一个workspace中多个project开发。但今天只是入门,就是简单的告诉大家如何在workspace中引入创建多个project以及创建framework和静态库添加到workspace中的方式。

话不多说,我们开始今天的学习吧!

正文

习惯了command+shift+N创建一个新项目的你,是否注意到了实际上Xcode还有很多其他的功能,为什么我这么说,我们可以在Xcode的菜单栏中File的New的子菜单一探究竟。

熟悉的快捷键是创建Project的,今天我们来看下面的Workspace。通过上面的快捷键介绍,我们可以尝试按control+command+N来新建一个workspace工作空间,如果你按不出来,很可能和我一样快捷键冲突了,我的是印象笔记快捷键冲突,我手动将印象笔记设置中冲突的快捷键修改了,就可以顺利出现创建workspace的界面了。

一、如何创建一个含有多个Project的workspace

1.创建Workspace

接下来,我们创建一个名为MultipleProject的workspace。

如图所示,空空如也。

接下来就要开始为其添加新的project啦~

2.创建Project,并添加到Workspace

创建Project的步骤我想大家都很熟练了~command+shift+N出现如图所示的界面。

取一个“ProjectA”的名字吧~

在下图所示的选框中选中我们最初创建的MultipleProject的workspace中。

选中之后如图所示,然后选择create创建按钮。

肉眼可见我们成功地将ProjectA加入了MultipleProject的workspace中。

3.添加现有Project到Workspace中

当项目中没有选中任何Project的时候通过点击Xcode的菜单栏File可以看到子菜单中有Add Files to “MultipleProject”。其中MultipleProject是我们创建的Workspace名称。

但是当我们创建完ProjectA并将其添加到MultipleProject中,我们发现MultipleProject中已经默认选中了ProjectA,这时候再点击Xcode的菜单栏File只能看到子菜单中有Add Files to "ProjectA"。其中ProjectA是我们前面创建的Project名称。

不要烦恼,这时候可以在Workspace的目录空白处点击右键选择Add Files to “MultipleProject”中。

点击按钮我们可以选中之前创建好的Project,我这里是ProjectB,选中其.xcodeproj文件将其添加到MultipleProject的workspace中。

添加好之后,我们可以清楚地看到MultipleProject中有两个project存在了,一个是ProjectA,另一个是ProjectB。

到此我们在workspace中加入多个project的问题已经解决了。

二、创建静态库,并添加到workspace中

1.创建静态库

通过File->New->Project,创建静态库。

取名叫StaticLibrary吧~

并将其加入到Workspace中~

 我们在StaticLibrary中简单增加一个输出HelloWorld的方法。

#import <Foundation/Foundation.h>@interface StaticLibrary : NSObject+ (void)printWords;@end#import "StaticLibrary.h"@implementation StaticLibrary+ (void)printWords {NSLog(@"Hello World!");
}@end

现在我想在ProjectA中调用该方法。我们应该怎么做呢?

2.生成静态库

由于是静态库项目,我们首先需要将代码编译成静态库,这里需要注意几点:

1.编译需要选中静态库项目,即StaticLibrary,不要选成其他项目ProjectA或ProjectB。

2.需要设置scheme中的Run为Release版本。

3.需要确定真机或模拟器版本,在编译时选择合适的方式。

我选择虚拟机,因为我将要在虚拟机上运行,大家可以都编译试试~

在了解以上几点后,我们就开始着手生成静态库文件吧~

可以直接command+B直接编译,但是我们今天不用这种方式,还是从Xcode的菜单栏找到编译,至于为什么呢?因为升级Xcode13后,咱么找不到Product这个文件夹了,我们怎么找到生成好的静态库文件是个棘手的问题。如果你认为棘手,是因为没有仔细观察过Xcode菜单栏。现在让我们一起来观察下,我相信你也会知道在哪里找到build出来的静态库文件啦。

我们选择好项目之后在这里选择Build直接Build出静态库文件,再使用Build底下的Show Build Folder in Finder即可打开生成好的.a文件所在的文件夹。

由于我需要在模拟器使用,所以将模拟器文本对应的libStaticLiberary.a文件拖入到ProjectA目录下。

3.使用静态库

引入StaticLibrary库中的StaticLibrary.h头文件,在代码中调用printWords方法。现在run一下ProjectA项目(请注意修改成ProjectA项目哦)。我们可以看到控制台成功显示了 Hello World! 的字样,这说明什么?这说明我们成功啦!

四、创建Framework,并添加到Workspace中

1.创建Framework

选择File->New->Project,和创建静态库一样,选择Framework。

取一个喜欢的名字吧,我的就叫AFramework吧~

然后和静态库一样,添加到我们今天的主角MultipleProject的workspace中,如下图所示。

 为了更好的演示,我们先在AFramework中创建一个自定义类,并实现类方法。

#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface Person : NSObject@property (nonatomic, copy) NSString *name;+ (void)sayHi;@endNS_ASSUME_NONNULL_END#import "Person.h"@implementation Person+ (void)sayHi {NSLog(@"Hi~");
}@end

我创建了一个Person类,想不出别的类,大家可以即兴发挥~

接下来我们到Build Phases中查看Headers下可以看到刚才创建的Person.h就在Project类目下。

我们也可以看到AFramework.h在Public下。众所周知,Public和Private的意思,所以外界可以直接访问AFramework文件,现在我们想让外界可以访问Person类,需要将Person.h移动到Public下面。

有两种方式,方式一是直接将Person.h拖拽到Public下面。

方法二是选中Person.h在检视面板中的Target Membership中进行更改。

然后在AFramework.h中导入Person.h文件

2. 使用Framework

我们找到ProjectA中的Project->General->Frameworks,Libraries,and Embedded Content,我们看到前面添加的静态库已经在其中。

我们就在这里添加AFramework.framework

接下来就可以像使用静态库或者系统库一样将framework导入到需要使用的文件中。

也可以引入#import <AFramework/Person.h>,都是可以的哦~

运行一下~

Hi~ 我们再一次成功啦~撒花✿✿ヽ(°▽°)ノ✿

iOS Workspace内多project开发相关推荐

  1. iOS应用内付费(IAP)开发步骤列表

    iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...

  2. IOS应用内购买App开发完整流程

    2019独角兽企业重金招聘Python工程师标准>>> 看了一些网上教程,基本上是老版本的了.我针对自己遇到的一些问题,结合官方文档把IAP(In-App Purchase)过程梳理 ...

  3. iOS应用内置付费详尽攻略

    我最近正在制作的一个程序里面,我就决定先把程序免费(其中只包含一个故事),然后把更多的故事放在in-app purchase里面.在这篇教程里面,你将会学到如何使用程序内置付费来解琐本地程序里面的内容 ...

  4. iOS 应用内购买(In-App Purchase)之开发

    iOS 应用内购买(In-App Purchase)之协议.税务和银行业务 使用IAP之前,需要签订协议,查看上面的链接. IAP开发 添加App内购项目 登录 iTunes Connect ,选择我 ...

  5. iOS通讯录,蓝牙,内购等开发系列

    –系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系 ...

  6. 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营

    编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,快速了解Xcode这个开发iOS应用程序的主要工具.   ...

  7. 《iOS开发全然上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营...

         编写Hello World应用程序通常被觉得,是学习不论什么编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,高速了解Xcode这个开发iOS应用程序的主 ...

  8. 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C

    2019独角兽企业重金招聘Python工程师标准>>> 编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应 ...

  9. Cocos2d-x使用iOS游戏内付费IAP(C++篇)

    source file url: http://www.tairan.com/archives/5515 Cocos2d-x使用iOS游戏内付费IAP(C++篇) 前期准备 设备与账号 在开始编码之前 ...

最新文章

  1. Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)
  2. python学习软件-python软件学习从入门到精通
  3. php 组装二维数组,php实现快速对二维数组某一列进行组装的方法小结
  4. 用“Web的思想”做PC客户端
  5. LeetCode 527. 单词缩写(Trie树)
  6. Asp.Net前台调用后台变量
  7. vsftpd出现500 OOPS: cannot change directory的解决办法
  8. C项目案例实践(0)-语言基础
  9. linux中的特殊符号 (|) 管道。
  10. Asp.net中Global.asax
  11. 团队作业三——项目思考
  12. Java方法——方法的重载
  13. 原生开发、H5开发和混合开发的区别
  14. 隔离变压器不触电原因
  15. Netlink的简介及使用方法
  16. TIOBE 11 月编程语言:Java 首次跌出前二;基于Pytorch的Kornia可微分计算机视觉库开源...
  17. 简述计算机桌面背景更换的流程,苹果电脑桌面壁纸怎么更换【详细步骤】
  18. swift 代码加载xib storyboard
  19. iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面
  20. 服务器安装360文档卫士,360文档卫士

热门文章

  1. AMCL中odom数据处理
  2. Graph Convolutional Matrix Completion,GC-MC
  3. 天下难事始于易,天下大事始于细。
  4. 算法:经典leetcode算法题解
  5. 一枚芯片的赶考之路:究竟该如何看待“AI评测”?
  6. 抢答器c语言程序设计,基于单片机的智能抢答器设计与实现
  7. 方舟神器/贡品代码大全
  8. git服务器更换IP地址后本地仓库设置
  9. html5用语义元素做旅游网站,HTML5语义元素
  10. 编译原理:代码生成(pcode),C语言实现