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
GHUnit和OCMock都是第三方的测试框架,其官方地址分别为:https://github.com/gh-unit/gh-unit,https://github.com/erikdoe/ocmock
阅读全文
0 0
- iOS开发知识总结
- iOS开发知识总结
- ios开发若干知识总结
- ios开发知识总结--百科
- iOS开发中的SQLite知识总结
- iOS开发者协会 开发知识总结
- iOS开发中的SQLite知识总结
- iOS开发中的SQLite知识总结
- iOS开发-C 和 OC 知识总结
- iOS开发知识总结(一)
- iOS 与 JS 交互开发知识总结
- iOS 与 JS 交互开发知识总结
- (转载)ios开发知识总结 — 上
- iOS开发之最近小知识总结二
- IOS 小知识总结
- iOS知识总结
- iOS 知识大总结
- iOS知识要点总结
- 滑动窗口的中位数
- Hibernate学习笔记(二)
- 51nod 1675 序列变换
- 解决three.js加载外部obj文件在chrome浏览器中无法显示的问题
- Java的三种代理模式
- iOS开发知识总结
- 2017上海国际人工智能可持续发展高峰论坛7月30日上海召开
- Android 按钮的点击事件实现1
- c++ 基础知识
- iOS探索--IOS学习路线总结
- Python 爬虫入门 3 Selenium+Python
- 【友盟分享】部分手机出现第一次分享之后第二次无法分享
- 浅谈Hybrid技术的设计与实现
- 深入理解RunLoop