Workspace
可以翻译成工作空间。
一般的,对于一个简单的应用,单独新建一个Project
就可以了,然后把所有的程序文件都放在里面。 但是,有时候,项目会比较复杂,我们的Project
有可能要使用其他的Project
文件, 或者引入其他的静态库文件,这个时候Workspace
就派上用场了。
Workspace
可以单独管理多个Project
,又可以通过配置,让各个Project
相互依赖。
如果不用Workspace
,如果用到其他Project
的文件, 做法就是要手动copy文件到当前的Project
,这是非常麻烦的事情。 使用Workspace
管理这些Project
只需要简单的配置即可。
通过菜单File -> New -> Workspace...
打开如下界面:
点击Save
按钮就创建好了一个Workspace
。
查看生成的文件结构:
实际上,刚才的动作,就是生成了一个*.xcworkspace
的文件夹,这里面存放的就是一些配置信息。
一个Workspace
中可以新建很多的Project
。
在Workspace
中新建一个Project
的本质是分为两步骤:
1、在Workspace
所在的目录中新建一个独立的Project
2、在Workspace
的配置文件中写入一些配置, 从而将刚刚新建的Project
当前Workspace
产生关系。
在Workspace
中,点击左下角的"+
"按钮,如下:
在出现的菜单中选择New Project...
,如下:
其他步骤省略,我们看下面这一步:
假设,我们在一个Workspace
中创建了两个Project
,我们的文件目录结构如下:
.
├── Project1
│ ├── Project1
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ └── main.m
│ ├── Project1.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ └── leleliu008.xcuserdatad
│ │ └── xcschemes
│ │ ├── Project1.xcscheme
│ │ └── xcschememanagement.plist
│ ├── Project1Tests
│ │ ├── Info.plist
│ │ └── Project1Tests.m
│ └── Project1UITests
│ ├── Info.plist
│ └── Project1UITests.m
├── Project2
│ ├── Project2
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ └── main.m
│ ├── Project2.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ └── leleliu008.xcuserdatad
│ │ └── xcschemes
│ │ ├── Project2.xcscheme
│ │ └── xcschememanagement.plist
│ ├── Project2Tests
│ │ ├── Info.plist
│ │ └── Project2Tests.m
│ └── Project2UITests
│ ├── Info.plist
│ └── Project2UITests.m
└── haha.xcworkspace
├── contents.xcworkspacedata
└── xcuserdata
└── leleliu008.xcuserdatad
└── UserInterfaceState.xcuserstate
理论上,一个Workspace
的Project
可以存放在任何地方, 但是,便于管理,我们最好与Workspace
的配置文件放在同一个文件夹下面。
我们经常需要使用一些第三方的开源的Project
或者某些公司的SDK
, 这时候,我们就需要把这些Project
导入到我们的Workspace
中。
导入的本质就是在Workspace
的配置文件中写入一些配置, 从而将要导入的Project
与本Workspace
产生关系。
实际上,第三方Project
管理工具CocoaPods就是干这个事情的。
在Workspace
的左侧右击选择"Add Files to "xx"...",如下:
只选择xx.xcodeproj
加入即可。
通过菜单Xcode -> Preferences...
打开首选项,选中Location
标签页, 设置Derived Data
为Relative
,点击Advanced
按钮进入高级设置, 选中Custom
,选中Relative to Workspace
。 这样,在Workspace
的Build/Products
文件夹下可以找到编译生成的目标文件了。