V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiangyuecn
V2EX  ›  iOS

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

  •  
  •   xiangyuecn · 2019-07-20 09:45:44 +08:00 · 2994 次点击
    这是一个创建于 1982 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新入手 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 友大佬,传授点经验😊🤞

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

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

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

    至于 Carthage / CocoaPod 之类的, 等代码稳定下来之后再搞.
    xiangyuecn
        6
    xiangyuecn  
    OP
       2019-07-20 11:17:52 +08:00
    @CSwater 感谢🤞🤞🤞,我深入研究一下 framework
    Google404
        7
    Google404  
       2019-07-20 12:01:52 +08:00
    你参考下 pod lib create 这个命令. 复制了里面的模板工程.
    pipasese
        8
    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
        9
    xi_lin  
       2019-07-20 15:16:04 +08:00
    5 楼说的和 pod 不冲突
    你就是需要用 pod 建个自己的私有库
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   872 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:32 · PVG 04:32 · LAX 12:32 · JFK 15:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.