Comments

简述

本文主要讲述了在iOS开发过程中,模块化工程架构的一种组织方式,本文主要讲述基于cocoapods来做模块化的方案,详细讲述了iOS开发怎么进行模块划分的内容,主要会在以下方面做阐述:

  • 为什么要做模块化
  • 模块设计原则
  • 模块化开发有哪些优点和缺点
  • 解耦与通信
继续阅读 →
Comments

这个命题貌似有点大,那就尽量将我理解的分享一下吧,首先说明一点,我是代码党,所以我所讲的都是代码布局。本文会围绕一些我们平常开发中常遇到的布局问题来进行叙述,包括以下几个方面:

  • 如何布局UIViewController的view
  • childViewController的处理
  • Autolayout来布局
  • tableView管理
继续阅读 →
Comments

移动端架构中图片库是非常重要的一环,其实图片库也可以理解为网络库的一种特殊使用模式,为了满足需要,图片库至少要满足以下特点:

  • 提供一个加载入口,通常以UIImageView的类别方法setImageWithURL:...开始
  • 支持异步网络加载图片
  • 支持内存缓存和文件缓存
  • 确保同一张图片不会被重复下载
  • 主流图片格式的解码
继续阅读 →
Comments

最近看到Casa Taloyum同学的关于IOS架构的文章,分享的概念和观点很值得一看,于是不禁心痒,也做些分享吧,我会从实际设计过程中需要思考的问题的角度着手来讲述,毕竟无论什么样的架构,什么样的设计都是要解决这些问题的。

今天就先讲讲网络层的需要思考的问题吧。

继续阅读 →
Comments

LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。(这里有一个关于调试器如何工作的总体的解释。)

相信每个人或多或少都在用LLDB来调试,比如po一个对象。LLDB的是非常强大的,且有内建的,完整的 Python 支持。今天我们主要介绍一个 facebook 开源的 lldb 插件 Chisel。可以让你的调试更Easy.

继续阅读 →
Comments

最近做项目时,因为iPhone6和iPhone6Plus的兼容,我们启用了Autolayout. 以前是因为不用也能满足需求,也是因为懒,没有认真使用,只是了解过。经过一段时间的使用,做下总结,希望给大家些帮助哈。

以前我写过IOS自动布局之Autoresizing是关于Autoresizing的介绍,在简单的布局上比较有用,今天总结的是更强大的Autolayout.

本文不是从零开始入门级的介绍,主要介绍了学习过程中遇到一些问题的解决方案,希望给大家帮助,如果初学者请先看看苹果文档,玩玩Autolayout.

PS: Autolayout的强大是毋庸质疑的,当你熟悉了它之后,你肯定会喜欢上它,布局将会比使用frame的绝对坐标时还方便。如果还没有用Autolayout,这已经是最后的时机啦,再不学就out了。

继续阅读 →
Comments

在工程拆分的架构中,一般会有一个主工程(上图中的MainProject), 很多个子工程(上图中的subProject). 它们可能是在一个workspace中,也可能作为subProject等. 但是一般子工程的代码都会打包为静态库.a或framework来使用.

考虑一个使用场景: 在subProject中使用resource怎么处理呢? 这个方案大家应该很容易想到,使用bundle来管理resource. 没错,我们也是这样用的, 但是如果我们想要更近一步,使用xib呢。本文给出我们使用的方案,文中的顺序会按照我发现解决问题的思路来陈述。

继续阅读 →
Comments

浮点数不准,这个貌似基本都知道。但是在开发中很多人没有对它的使用产生警觉。如果你在开发Cocoa应用,你可能使用过如下代码判断系统版本:

1
2
3
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
  //something support for ios7
}

这样一段代码也的确工作良好,但是注意了如果你把比较的数值改为7.1,那么很有可能就会出问题。

继续阅读 →