《从零开始学iOS7开发系列3-我的地盘我做主-Cha20》.pdf

《从零开始学iOS7开发系列3-我的地盘我做主-Cha20》.pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 (所属关系

文档评论(0)

wgvi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档