iOS开发知识总结

来源:互联网 发布:常用的nosql数据库 编辑:程序博客网 时间:2024/05/17 06:47


1. 类别

类别是一种为现有的类添加新方法的方式。利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inheritance)更为简洁的方法来对class进行扩展,无需创建对象类的子类就能为现有的类添加新方法,可以为任何已经存在的 class 添加方法,包括那些没有源代码的类(如某些框架类),但不能删除修改之前的方法。 

类别主要有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.

A:平铺模式,一般由scrollView和pageControl组合而成的展示方式。手机自带的天气比较典型。 
B:标签模式,tabBar的展示方式,这个比较常见。 
C:树状模式,tableView的多态展示方式,常见的9宫格、系统自带的邮箱等展现方式。


5.模态导航

  • UIModalPresentationFullScreen,全屏状态,是默认呈现样式,iPhone只能全屏呈现。
  • UIModalPresentationPageSheet,它的宽度是固定的768点,在iPad竖屏情况下则全屏呈现。
  • UIModalPresentationFormSheet,它的是固定的540x620点,无论是横屏还是竖屏情况下呈现尺寸都不会变化。
  • UIModalPresentationCurrentContext,它与父视图控制器有相同的呈现方式。

    模态视图的显示风格: 

    通过设置属性modalpresentationStyle 

    • UIModalPresentationFullScreen;
    • UIModalPresentationPageSheet;
    • UIModalPresentationFormSheet;

    模态视图的过渡风格: 

    通过设置属性modalTransitionStyle 

    • UIModalTransitionStyleCoverVertical;
    • UIModalTransitionStyleFlipHorizontal;
    • UIModalTransitionStyleCrossDissolve;
  • 6.单元测试框架

    OCUnit和XCTest都是官方的测试框架,OCUnit已经过时被XCTest所取代。
    GHUnit和OCMock都是第三方的测试框架,其官方地址分别为:https://github.com/gh-unit/gh-unit,https://github.com/erikdoe/ocmock