梧桐

目 录

  • December 29, 2014

    深入研究block语法

    我举一个简单的例子来定义和使用blockvoid (^block1)(void) = ^void (void){ NSLog(@"hello");};block1();是不是很简单啊!么得什么难度嘛!###block的存在样式.htypedef returnType(^name)(arguments);typedef void(^block2)(void);typedef void(^block3)(NSInteger index);-(void)doSomethingWithBlo...

  • November 20, 2014

    如何使用Masonry简化iOS屏幕适配

    开源项目Masonry旨在让自动布局(Auto Layout)的代码更简洁,可读性更强。Masonry is a light-weight layout framework which wraps AutoLayout with a nicer syntax. Masonry has its own layout DSL which provides a chainable way of describing your NSLayoutConstraints which results i...

  • November 17, 2014

    Xcode单元测试

    Xcode 6 的发布给我们带来了诸多新特性,譬如时下最火的swift,即时显示的playground,增强的interface builder支持实时渲染等等。今儿来看看Xcode 6 更新的但是少有重视的XCTest框架,此框架现已扩展为支持性能测试。关于iOS项目测试测试是开发质量的保证,Xcode自4.x以来就集成了自己的测试框架OCUnit,参考 iOS开发中的单元测试(一)&(二) ,发展到5时代,你会发现已经有一个默认的XCTest框架,直到现在…XCTest越来越强...

  • November 08, 2014

    Objective-C 奇妙的宏定义

    ObjC是C的超集,所以自然也就继承了他的宏,本文介绍一些宏定义的示例以及在项目中常用的宏定义。宏定义的好处首先是能方便管理程序中常量,不需要找来找去还会丢掉。再者可以节省不少代码啊(懒 -. -),提升程序运行效率。宏定义的写法#define PI 3.14#define kWidth 200#define Max(a,b) ((a) > (b) ? (a) : (b))前两个就是简单的定义PI,kWidth的值,第三个定义了一个获取最大值的函数。注意右边需要加括号,宏定义在预编译...

  • September 09, 2014

    设计模式来啦,MVVM模式

    接触MVVM有一段时间了,期间通过网上的例子,公司的开发平台对Model-View-ViewModel这种模式有一定的了解,遇到不少问题,也有一些自己的理解。情景1:团队辛辛苦苦完成了一个项目,抱着激动的心情去给用户做demo,而用户给你的反馈是UI很不满意,要重新修改,否则拒绝验收。大规模修改UI,晴天霹雳!情景2:产品在一家客户上线运行反应不错,公司准备扩大营销市场,寻求更多的客户,此时,不同客户对UI纷纷提出修改意见,众口难调,但是老总发话,客户是上帝!那么,该是MVVM登场的时候了...