1. 类别
类别主要有3个作用:
(1)可以将类的实现分散 到多个不同文件或多个不同框架中,方便代码管理。也可以对框架提供类的扩展(没有源码,不能修改)。
(2)创建对私有方法的前向引用:如果其他类中的方法未实现,在你访问其他类的私有方法时编译器报错这时使用类别,在类别中声明这些方法(不必提供方法实现),编译器就不会再产生警告
(3)向对象添加非正式协议:创建一个NSObject的类别称为“创建一个非正式协议”,因为可以作为任何类的委托对象使用。
2.Runloop
A:Runloop的作用在于当有事情要做时它使当前的thread工作,没有事情做时又使thread 休眠sleep。Runloop并不是由系统自动控制的,尤其是对那些新建的次线程需要对其进行显示的控制。
B:有3类对象可以被run loop监控:sources、timers、observers。当这些对象需要处理的时候,为了接收回调,首先必须通过 CFRunLoopAddSource ,CFRunLoopAddTimer 或者 CFRunLoopAddObserver 把这些对象放入run loop。 要停止接收它的回调,可以通过CFRunLoopRemoveSource从run loop中移除某个对象。
C:每一个线程都有自己的runloop, 主线程是默认开启的,创建的子线程要手动开启,因为NSApplication 只启动main applicaiton thread。
D:NSTimer默认添加到当前NSRunLoop中,也可以手动制定添加到自己新建的NSRunLoop的中。使用 alloc , initWithFireDate 或者 timerWithTimeInterval 这些方式创建的定时器必须手动加入到runloop ;使用 scheduledTimerWithTimeInterval 创建的则是默认加入到当前runloop的。
3.通讯录
从通信录数据库查询联系人数据是无法使用SQL语句,只能通过ABAddressBookCopyArrayOfAllPeople和ABAddressBookCopyPeopleWithName函数获得. ABAddressBookCopyArrayOfAllPeople函数是查询所有的联系人数据。ABAddressBookCopyPeopleWithName函数是通过人名查询通讯录中的联系人,其中的name参数就是查询的前缀关键字。
4.导航模式
平铺导航模式是在内容组织上没有层次关系,展示的内容都放置在一个主屏幕上,采用分屏或分页控制器进行导航,可以左右或者上下滑动屏幕查看内容。
平铺导航模式是指内容间没有从属关系,主要涉及的控件UIPageControl和UIScrollView.
5.模态导航
-
UIModalPresentationFullScreen,全屏状态,是默认呈现样式,iPhone只能全屏呈现。
-
UIModalPresentationPageSheet,它的宽度是固定的768点,在iPad竖屏情况下则全屏呈现。
-
UIModalPresentationFormSheet,它的是固定的540x620点,无论是横屏还是竖屏情况下呈现尺寸都不会变化。
-
UIModalPresentationCurrentContext,它与父视图控制器有相同的呈现方式。
模态视图的显示风格:
通过设置属性modalpresentationStyle
- UIModalPresentationFullScreen;
- UIModalPresentationPageSheet;
- UIModalPresentationFormSheet;
模态视图的过渡风格:
通过设置属性modalTransitionStyle
- UIModalTransitionStyleCoverVertical;
- UIModalTransitionStyleFlipHorizontal;
- UIModalTransitionStyleCrossDissolve;
6.单元测试框架
GHUnit和OCMock都是第三方的测试框架,其官方地址分别为:https://github.com/gh-unit/gh-unit,https://github.com/erikdoe/ocmock