请教 xcode 里面该怎么样建 ios 项目,避免重复劳动易于管理

2019-07-20 09:45:44 +08:00
 xiangyuecn

新入手 ios 开发,看了几天 swift 入门文档,现在不知道要怎么样建项目结构才合适:

  1. 最终开发出来的多个 app,98%的代码是相同的,本质上就一些配置、图标不同而已。
  2. 通用的公共代码,比如:时间日期格式化、文件读写等,最好独立出来,方便以后别的项目使用。
  3. 本着眼不见为净的原则,第三方 sdk 之类的都统一到一个不碍眼的地方,便于统一管理,不要和自己的代码、库混放到一起(大部分第三方,还是搞成第 2 条这种公共代码为好,方便别的项目使用,比如:分享、支付)。

昨天研究了一天,对于第 1 条:建一个主工程里面用多个 target 能够解决,也算完美。

那么对于第 2、3 条,研究了一天只研究出两种方案,可行性未知:

A. 建一个工程,里面用 group 对不同性质的功能进行分组(文件夹),公共代码用 XXXComm 文件夹内、第三方都扔到 XXXSDKs 文件夹内

B. 建三个工程,一个主工程,一个公共的 Framework,一个第三方 sdk 垃圾桶 Framework (目前 Android 里面采用的类似的做法,分成多个 Module )

0. 有其他更好的建立方案?

准备今天就要开始写点代码,希望前期把代码库整好看点,方便维护。以前看别人写的 oc 代码都复制黏贴的一坨一坨的,改一个通用功能,要改好几个工程的源码,太可怕了。。。特此请教 v 友大佬,传授点经验😊🤞

2995 次点击
所在节点    iOS
9 条回复
greenlake
2019-07-20 10:20:59 +08:00
sdk 不需要自己打理的,用 pod 阿,基本结构 mvc,model, view, controller, service 各一个目录,当然之后熟了可以玩 mvvm
xiangyuecn
2019-07-20 10:30:59 +08:00
@greenlake 感谢回复,用不用 CocoaPods、MVVM 这些都是次要的,CocoaPods 能解决第 3 条问题,但对第 2 条自己的公共源码的组织上并没有帮助,比如:时间日期格式化的共用方法。刚才又研究了半天,B 方法可能好点,以后别的项目里面用也会方便些吧
zongren
2019-07-20 10:33:21 +08:00
公共代码打包成 framework,用 carthage
xiangyuecn
2019-07-20 10:46:30 +08:00
@zongren 好的,我研究一下 carthage
CSwater
2019-07-20 11:15:19 +08:00
1. 新建一个以 framework 为 target 的项目, 独立 git 管理, 将相关代码放进去.
2. 使用 workspace 将 framework 项目和主项目关联起来, 并将 framework embed 到主项目中去.

这是我当前见到的最佳实践了.
1. 工程独立, 独立的 framework 项目, 还能添加 Demo 工程独立于主工程进行测试.
2. 便于修改, 代码变动的时候, 可以即刻更新, 无需重新发布版本.
3. 易于调试, 断点能够断到 framework 项目相关代码.

需要注意的地方:
1. 可访问修饰符的配置.
2. 静态 /动态 framework 配置的选择

至于 Carthage / CocoaPod 之类的, 等代码稳定下来之后再搞.
xiangyuecn
2019-07-20 11:17:52 +08:00
@CSwater 感谢🤞🤞🤞,我深入研究一下 framework
Google404
2019-07-20 12:01:52 +08:00
你参考下 pod lib create 这个命令. 复制了里面的模板工程.
pipasese
2019-07-20 12:04:29 +08:00
我理解你说的应该就是组件化,推荐 CocoaPod,https://guides.cocoapods.org
1,使用 CocoaPod 的命令新建组件仓库
2,在你开发的主工程里配置 Podfile,通过本地路径引用刚才新建的仓库,类似这样
pod 'Alamofire', :path => '~/Documents/Alamofire'
这样就进入了开发模式,达到了 5 楼说到的效果。
xi_lin
2019-07-20 15:16:04 +08:00
5 楼说的和 pod 不冲突
你就是需要用 pod 建个自己的私有库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/584596

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX