- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《从零开始学iOS7开发系列3-我的地盘我做主-Cha20》.pdf
从零开始学iOS7开发系列3-我的地盘我做主-Cha20
说明:
本系列⽂章的原⽂及⽰例代码来⾃raywenderlich store中的iOS Apprentice 系列3教程,经过翻译
和改编。
版权归原作者所有,本系列教程仅供学习参考使⽤,感兴趣的朋友建议购买原英⽂教程教程(The
iOS Apprentice Second Edition: Learn iPhone and iPad Programming via Tutorials!)。
购买链接:
/store
欢迎继续我们的学习。
⾸先让我们来点理论知识充电吧。
Object graph(对象图)
对象可不像修⼠,在深⼭之中云深不知处。我们的应⽤中有很多对象,它们需要在⼀起共同⼯作。
对象之间的关系被称为object graph (对象图)。
⽐如在这款应⽤中,CurrentLocationViewController就和⼏个对象之间有⼀定的关联:
这些对象是它所拥有的实例变量和属性,或者换句话说是它所“拥有”的对象。但这只是个开始,
CurrentLocationViewController本⾝被其它对象所拥有,⽐如它属于UITabBarController,⽽
UITabBarController则属于UIWindow。
当然,到了这⾥,我们也仅仅看到了当前应⽤的对象图的⼀⼩部分。对象图显⽰了不同对象之间
的所属关系。(不要把对象图和类层级图弄混了。类层级图显⽰的是对象的数据类型,⽽不是对
象本⾝)。
对象的ownership (所属关系)在iOS开发中是⾮常重要的概念。我们需要建⽴⼀个清晰的图景,
了解对象之间的所属关系,因为这些对象的⽣死存亡就取决于这⼀点!如果⼀个对象没有任何的
owner (不被任何⼈需要的穷DS),那么它就会被⽴即deallocate (销毁!)。如果应⽤中还要
⽤到这个对象,就会带来毁灭性的打击(crash!)。反过来也⼀样,如果某个对象有太多的
owner(⼈⼈都想追的⽩富美),那么这个对象就会⼀直驻留在内存之中,这样就可能导致应⽤内
存空间不⾜,直到崩溃。
每个对象都可能有超过⼀个owner。例如,当⽤户触碰Tag Location按钮时,
CurrentLocationViewController会传递⼀个CLPlacemark对象给LocationDetailsViewController ,
那么视图控制器就会分享它的所有权。
我们在LocationDetailsViewController.h中使⽤以下语句对此进⾏了声明:
@property(nonatomic,strong) CLPlacemark *placemark;
通过上⾯的语句,LocationDetailsViewController就获得了⼀个新属性placemark ,同时是⼀种
strong关系。当我们把⼀个对象放到该属性变量时,Tag Location界⾯就成了该对象的共同拥有
者。
对象关系的类型有两种:strong和weak 。在strong强关系中,⼀个对象拥有另外⼀个对象的所有
权,同时还可以和其它所有者分享。在weak弱关系中,不存在此类的ownership (所属关系)。
之前我们在outlet类型的属性变量中曾经使⽤过weak属性:
@property(nonatomic,weak) IBOutlet UILabel *latitudeLabel;
之所以outlet类型的属性属于weak ,是因为视图控制器并⾮真的是它们的所有者,真实的情况
是,outlet属性变量属于视图控制器的主视图。
weak弱类型在delegate 中也经常⽤到:
@property (nonatomic, weak) id IconPickerViewControllerDelegate delegate;
上⾯的这⾏语句来⾃系列1教程中的IconPickerViewController类。图标选择器有⼀个代理对象,
它的作⽤是监听在图标选择界⾯上可能发⽣的事件。
通常情况下⼀个对象不要拥有⾃⼰的代理,因为这样会导致ownership cycle (所属关系
您可能关注的文档
- 《不锈钢氨气减压阀》.doc
- 《不锈钢氨用截止阀》.doc
- 《不锈钢污水污物潜水泵》.pdf
- 《不锈钢潜水式排污泵》.pdf
- 《不锈钢调节球阀》.pdf
- 《不锈钢防爆齿轮油泵》.pdf
- 《不锈钢齿轮油泵》.pdf
- 《与罗伯特艾伦对话 创造多种收入流的秘密》.pdf
- 《世界三大励志经典之一:做你想做的人[英]詹姆斯•艾伦着》.pdf
- 《两台WinCC之间OPC通讯方法(WinXP)》.pdf
- 《中国通史》文字稿第12集春秋争霸.docx
- java教程--类与对象-讲义课件(演讲稿).ppt
- Vue应用程序开发-(1).pptx
- 东北师大版社劳动实践与评价指导手册一年级上册主题二活动一寻找五彩的树叶课时课件.pptx
- 外研版英语四年级上册 Module 4 Unit 2 How much is it单元教学设计.docx
- 外研版英语四年级上册Module 4 单元整体教学设计.docx
- 6《上课之前》课件 鄂科技版 心理健康教育一年级.pptx
- 《1~5的认识》说课课件(共25张PPT)人教版一年级上册数学.pptx
- 六《解决问题(1)》说课课件 人教版 三年级上册数学.pptx
- 七《解决问题》说课课件 人教版 二年级上册数学.pptx
文档评论(0)