PPPan's 平凡之路

非宁静无以致远

做一个互联网内容的贡献者。


Tag: iOS


  1. iOS 持续集成系列 - 自动化 Code Review

    iOS 持续集成 - 开篇 iOS 持续集成 - 自动化 Code Review [iOS 持续集成 - 自动化单元测试] [iOS 持续集成 - 自动化打包与分发] 为了保证代码质量,Code Review 是非常重要的一环。细到*的位置是否正确,大到代码的结构是否符合了软件开发的一些基本原则,都在这项工作的范围内。 受限于现实情况,大多数团队没有足够的时间进行 Code Review,那么只能把一部分 CR 工作交给计算机去完成了。我们只需要定下合理的流程,用代码告诉计算机需要做什么,剩下…

    iOS, 自动化继续阅读

  2. 深挖 Swift 中的字符串可比性

    在写 《从 Swift 中的 max(::) 看设计哲学》的过程中,产生了这样一个想法: 既然 max(_:_:) 可以用来对比任何 Comparable ,而 String 是符合 Comparable 的,那么用它来比较两个字符串"谁大谁小"会怎么样呢? 由于实验结果的捉摸不定,于是产生了一探究竟的念头。过程很有趣,结果让人感叹计算机科学之深厚。同时也是典型的 How I Resolve A Problem,故记。 用 max 来对比 String The Comparable pro…

    iOS继续阅读

  3. 从 Swift 中的 max(_:_:) 看设计哲学

    由于 Swift 不再支持宏了,于是 MAX,MIN 等一些列常用宏都被重写为 Swift 函数。我们来看看函数的定义: @warn_unused_result public func max<T : Comparable>(x: T, _ y: T) -> T warn_unused_result 先说说 @warnunusedresult 注解。 顾名思义,被该注解标记的方法所产生的返回值,如果未被使用,编译器会不开心哦(编译的时候会产生一条警告⚠️)。 这里讲一下方法…

    iOS继续阅读

  4. 谈谈组件封装的思路和实现--PSCarouselView

    前两天面试了一个应聘者,他的演示项目里有广告轮播功能。恰好之前我封装过一个实现了此功能的控件,于是就顺着他广告轮播的实现一直往下聊,从需求的抽象一直聊到各种实现的细节和需要考虑的问题等等。组件的封装是开发中比较有趣的一件事。今天我们就拿轮播控件举例,聊聊组件的封装。 授人予渔先要授人予鱼。先给出鱼(PSCarouselView),再慢慢讲渔。 分析需求 一般来说,我们在封装组件的时候,会先思考以下几点 这个组件要做什么 这个组件至少需要知道哪些信息 这个组件会反馈哪些信息 这个阶段,我们还不会考…

    iOS继续阅读

  5. iOS项目架构 - 统一行为

    “我们虽然在构造软件,但软件也会重新塑造我们”。在写iOS项目架构-模块化的时候,我仍然觉得我所构建的统一行为方式还算不错,可以写出来与大家探讨探讨。昨日将应用发布的闲暇之余阅读了objc中国的这篇文章,令我明白尚有更优的解决方案。本文从实际的例子出发,发表一下我的拙见,用以和上文做对照,权当抛砖引玉。 BaseViewController 例子1 我们在构建一个App的时候,会有许多相同的行为。例如,任何需要网络请求的界面,总会需要一个indicator来告诉用户,“噢,我正在操作,请等我一下…

    iOS继续阅读

  6. iOS项目架构 - 规范

    记得刚工作的时候,我的Mentor带我参加某银行业务系统研发成果交流分享会。会议让我印象很深的一点,是关于规范。发言人在说规范的时候,举了他见过的这么一个例子: <div class="div1" ...> <div class="div2" ...> <div class="div3" ...> ... </div> </div> </div> “只有鬼才知道他的div1是什么!” 没有规…

    iOS继续阅读

  7. iOS项目架构 - 模块化

    当我们谈论iOS架构的时候我们在谈论什么 模块化 规范化 统一行为 本文主要就以上模块化,以网络请求模块的抽取为例稍作讨论。 模块化 模块化的目的是实现解耦,提升模块、组件的复用性。一个很简单的例子,App需要与服务器交换数据,最差的做法,是把网络请求、回调、业务处理、界面操作全部写在ViewController里。如果把网络请求抽取出来,建一个Webservice类,仅负责最基本的RESTful请求,并在回调中处理好类似404,无网络等各种网络状况。那么,这个类就变成了通用的网络服务处…

    iOS继续阅读

  8. iOS的多Target应用

    最近刚完成了一个多Target的项目,做了许多思考与选择,现写下心得总结,权当抛砖引玉。 项目背景 本项目是一个适用于正在学车人群的预约学车平台。分为学生端和教练端。学生端主功能为预约学车,教练端主功能为排课。 什么时候选用多Target 多target的选用,意在实现最大化重用代码。其经典情景是有多个类似的App,界面设计与业务逻辑有许多相似之处,仅仅有少数不同的业务逻辑,只需要在打包时将不同的配置文件打包好,就可以形成一个个不同的客户端。 我负责两个客户端有以下共同点: 近乎相同的登陆注册界…

    iOS继续阅读