- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
iOS常用开发机制介绍–delegate ●什么是delegate: delegate又称委托,是一种回调函数,用于类之间彼此调用的解耦。如:ClassA调用ClassB,当ClassB想要回调ClassA的时候,用到delegate。 delegate是最常用的iOS机制,iOS原生控件大多使用delegate机制实现回调和解耦,如tableViewDelegate,textViewDelegate等。因此对于公共接口的场合,多使用delegate。 ●如何使用delegate: ClassB想做一些事情,但是这些事情ClassB本身做不了,于是ClassB先声明一个protocal(协议),所有调用ClassB的类C必须遵守该协议,实现一系列的方法来帮助ClassB完成该事情。ClassA调用ClassB,并且ClassA遵守该协议,则ClassA中实现这一系列方法来完成ClassB的事情。 ●举个例子: 请见示例代码。 iOS常用开发机制介绍–block ●什么是block: blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。Block实体形式如下: ^(传入参数列){行为主体}; Block实体开头是“^”,接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,可以用return回传值,类型会被compiler自动辨别。如果没有参数列要写成: ^(void)。 block与delegate实现的功能相同,但适用场合不同:异步和简单的回调用block更好。iOS有很多例子比如常用的网络库AFNetwork,ASIHTTP库,UIAlertView类都是用block。一般来讲,block和delegate可以实现互换。 ●如何使用block: 请见示例代码。 iOS常用开发机制介绍–KVO ●什么是KVO: KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。 ●如何使用KVO: 1. 注册,指定被观察者的属性: [kvoData addObserver:self forKeyPath:@”kvodata options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL]; 2. 实现回调方法 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if([keyPath isEqualToString:@kvodata]) { //do something } } 3. 移除观察 - (void)dealloc { [kvoData removeObserver:self forKeyPath:@kvodata]; } 4. 当其model或其他类中国setValue:forKey方法改变kvodata的值时,则触发2中的回调方法。 iOS工程开发常用方式 - CocoaPods ●CocoaPods类库管理工具: 方便引入和管理第三方库。 ●常用CocoaPods库: ·ASIHTTPRequest:一个轻量级的 iOS 网络通信类库, 基于 CFNetwork 框架开发, 但现在已经停止更新, 多数开发者改用 AFNetworking 替代。 ·AFNetworking:基于Cocoa Foundation URL Loading System来封装,采用 NSURLConnection + NSOperation, 主要方便与服务端 API 进行数据交换, 操作简单, 功能强大, 现在许多人都用它取代 ASIHTTPRequest。 ·FMDB:FMDB是iOS平台的SQLite数据库框架,以Obj-C的方式封装了SQLite的C语言API。FMDB使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码对比苹果自带的Core Data框架,更加轻量级和灵活,并且提供了多线程安全的数据库操作方法,有效地防止数据混乱。
原创力文档


文档评论(0)