iOS 使用.xcworkspace文件管理代码和工程依赖(实现项目模块化)
一、创建xcworkspace文件。
在cocoapods安装后,项目文件里都会多一个后缀为.xcworkspace的文件。打开这个文件就相当打开最初创建的项目了。那么这个文件也就是用来管理项目的,它包含你创建的项目和cocoapods的项目。
如果手动创建.xcworkspace文件怎么创建,很简单。打开Xcode 点击file -> new -> workspace。

二、添加文件到.xcworkspace
创建好之后打开,现在里面没有任何工程,那就要添加工程。添加方法有很多 ,可以把之前的工程文件后戳为.xcodeproj文件直接拖进去,也可以右键选择Add files to "XXXX.xcworkspace",选择你要加入的文件。

或者创建新的工程,在选择存储路径的地方选择刚刚创建.workspace文件。

这样添加多个就可以在一个文件里面管理多个工程的文件了。操作的也是直接操作的其他工程里的文件。
三、建立工程依赖(模块化)
如果你的工程在之前的设计模式是mvc的话,在一个工程里面肯定有很多文件和子文件来区分那个文件代表那个模块的代码。那么模块化就是把这些文件转为一个一个工程放在里面只要运行一个工程来调用其他工程的代码。首先要创建子工程,创建framework工程文件。

在存储路径的时候也是选择.xcworkspace文件目录。

大家应该都知道framework文件的作用,就是封装好的类,可以放到其他工程进行使用。但不能直接进行修改,在外部也看不到framework里面的代码。建立工程依赖就是利用这样的方法来实现模块化的项目框架。下面就是怎么把框架引入工程里。点击工程文件进入TARGETS ->Build Phases -> Link binary With Libraries 在里面添加framework库文件。

在添加文件的页面第一个文件夹下就有之前创建的framework文件,直接选择就好了。

这样就把创建framework文件添加到了第一个工程里面。现在我们在framework文件里面添加一个继承自NSObject的文件。在里面写一个“sayhello”的方法。

创建方法之后就是要把这个类的头文件写到“header”文件里面。否在在运行时生成的文件不能被引用。在一块创建framework的时候打开里面会会发现只有一个.h文件,这个文件是“header”文件,把刚刚创建的类的头文件import到里面。

虽然添加好了头文件但是还是不能引用,如果现在去工程运用这个类,在编译时会报找不到该文件,因为还少一步。点击framework工程选择TARGETS ->Build Phases -> Headers 打开之后发现有Pubilc,Pravte,project三项,把Project里的文件拖到Pubilc里面。这样就完成了 。现在去第一个工程里面引用刚刚创建的类来执行“sayhello”方法。

到此为止就全部结束了 。如果有运行又崩溃的信息有两个解决方法。
四、解决运行时崩溃的现象。
看看在工程中引入framework文件时后面的status选项是Required 还是Optional
如果是Required就换成Optional 或者在framework文件里面设置库文件的类型。

在这个类型选择上Required 对应的是Dynamic Library Optional对应Static Libary 选择好之后运行就可以了。
到此为止全部结束
此贴给初学者看的,大神们如果有任何指正,欢迎评论思密达!
作者:绝版灬懒小孩
链接:https://www.jianshu.com/p/4a0841618726
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2017-07-03 iOS 权限判断 跳转对应设置界面
2017-07-03 iOS~判断应用是否有定位权限
2017-07-03 iOS 判断是否有权限访问相机,相册
2017-07-03 UIAlertController中TextField的用法
2017-07-03 Swift-UITextField用法
2015-07-03 Java数组与泛型
2015-07-03 Android4.3 蓝牙BLE初步