- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Cocoa设计模式简介;有关设计模式
什么是设计模式
为什么要用设计模式
基础模式
MVC
模板方法
更强大的模式
单例
通知
委托;什么是设计模式(Design pattern)?
设计模式是一套被反复使用的、多数人知晓的、经过分类的,代码编写经验的总结。
为什么要使用设计模式?
设计模式在一定程度上帮助我们实现代码的重用,编写出健壮的代码。
注意:不能滥用设计模式
;Cocoa基础模式介绍;M,Model,处理应用程序的业务逻辑,数据。关键子系统
V,View,应用程序的UI
C,Controller,用来解除M和V之间的耦合;MVC;MVC;解除模型子系统和视图之间的耦合,即M与V互不依赖——低耦合
高度可重用性,控制器根据需求选择模型进行处理,并选择视图将处理结果展示出来
快速部署,业务逻辑和界面表现分离且互不干涉,缩短开发时间
缺点:管理更多的文件。;“不要找我们,我们会找你”——好莱坞模式
系统在需要使用到时候会自动调用,一般不需要直接调用
子类不改变算法结构即可重定义算法或过程中的某些特定步骤
-dealloc,-drawRect,-init,-ViewDidLoad??;默认模板方法3大规则:
何时可以调用默认实现
很都情况下,默认的实现没有任何功能。此时调用默认实现是安全的,但也是没有必要的。如-drawRect
何时应该调用默认实现
默认实现的规则可能某些情况与你的设定是相同的,此时不需要再去实现默认方法。如-pointInside:withEvent
何时必须调用默认实现
模板方法的默认实现做了很重要的操作,任何子类重定义时必须显示调用。如-dealloc
;该模式需要创建子类以重写模板方法
可能难以文档化模板方法的预期使用
需要清晰地标识方法,使得可以理解它们的预期使用,并且需要指明每个方法的调用规则(可以,应该,必须,禁止)
模板方法模式最好只保留用于最成熟、稳定的设计中;更强大的模式;仅有一个实例,并且定义了创建和访问实例的约定
通常表示物理设备,系统属性或不应该被复制的虚拟资源
UIApplication,UIWindow, Myself,SocketManager等
思考:单例和静态类;封装共享资源
提供唯一一个访问接口(内置创建方法)
控制实例化,阻止创建类的多个实例。需要考虑new,alloc,copy方法
取消分配。由于单例不会被释放,需要在应用终止的时候,释放占用的资源
线程安全;一个单例的Demo;优点:
对于物理设备,系统属性等。数据唯一,方便使用
缺点:
一旦被创建,就一直在内存中,直到程序结束前无法被释放;对象之间无须紧密的耦合
一个对象可以给任意数量的对象广播消息,支持一对多、多对多
适用于MVC模式下;通知;只有注册接收通知消息,才会接收到相应的通知
对象销毁前,必须注销已注册的所有消息,不然会导致程序Crash;委托是一种简单而强大的模式。在此模式中,程序中的一个对象代表另外一个对象执行某个动作,或者与之相互协作共同完成某个任务。发布委托的对象持有其他对象(委托)的引用。在适当的时候,它会向委托发送消息。消息用于通知委托的对象将要处理或者已经处理某个事件。作为响应,委托对象会更新外观或者更新自身或应用程序其他对象的状态。在某些情况下,委托对象也可以返回一个值。;UIApplicationDelegate Protocol
–?application:didFinishLaunchingWithOptions:
–?applicationWillTerminate:
–?applicationDidFinishLaunching:;创建自己的委托;定义委托对象;设置委托对象;定义委托方法、声明实现委托;使用方式
委托对象被销毁时,一定要将委托对象置为nil
;Thank You
原创力文档


文档评论(0)