仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3539|回复: 20
打印 上一主题 下一主题

[学习教程] IOS制作之iOS 5与iOS 6的 low-memory 处置仓酷云

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
视图是仪表盘模型是发动机控制器是控制芯片CoreData---管理数据OBJC刚学的时候觉得CD很高深其实他是最容易用的库之一挪动设备终真个内存极其无限,使用程序必需做好low-memory处置事情,才干制止程序因内存利用过年夜而溃散。


low-memory处置思绪

一般一个使用程序会包括多个viewcontrollers,当从view跳转到另外一个view时,之前的view只是不成见形态,其实不会当即被清算失落,而是保留在内存中,以便下一次的疾速展现。可是假如使用程序吸收到体系收回的low-memorywarning,我们就不能不把以后不成见形态下的views清算失落,腾出更多的可以使用内存;以后可见的viewcontroller也要公道开释失落一些缓存数据,图片资本和一些不是正在利用的资本,以免使用程序溃散。

思绪是如许,详细的实行依据体系版本分歧而略有差别,本文将具体申明一下iOS5与iOS6的low-memory处置。
iOS5的处置

在iOS6之前,假如使用程序吸收到了low-memory告诫,以后不成见的viewcontrollers会吸收到viewDidUnload动静(也能够了解为主动挪用viewDidUnload办法),以是我们必要在viewDidUnload办法中开释失落一切outlets,和可再次创立的资本。以后可见的viewcontroller经由过程didReceiveMemoryWarning公道开释资本,详细见代码正文。


举一个复杂的例子,有如许一个viewcontroller:

  • @interfaceMyViewController:UIViewController{
  • NSArray*dataArray;
  • }
  • @property(nonatomic,strong)IBOutletUITableView*tableView;
  • @end
对应的处置则为:

  • #pragmamark-
  • #pragmamarkMemorymanagement


  • -(void)didReceiveMemoryWarning{
  • //Releasestheviewifitdoesnthaveasuperview.
  • [superdidReceiveMemoryWarning];

  • //Relinquishownershipanycacheddata,images,etcthatarentinuse.
  • }


  • -(void)viewDidUnload{
  • //RelinquishownershipofanythingthatcanberecreatedinviewDidLoadorondemand.
  • //Forexample:self.myOutlet=nil;
  • self.tableView=nil;
  • dataArray=nil;

  • [superviewDidUnload];
  • }


iOS6的处置

iOS6放弃了viewDidUnload办法,这就意味着统统必要我们本人在didReceiveMemoryWarning中操纵。
详细应当怎样做呢?
1.将outlets置为weak
当viewdealloc时,没有人握着任何一个指向subviews的强援用,那末subviews实例变量将会主动置空。

  • @property(nonatomic,weak)IBOutletUITableView*tableView;
2.在didReceiveMemoryWarning中将缓存数据置空

  • #pragmamark-
  • #pragmamarkMemorymanagement


  • -(void)didReceiveMemoryWarning
  • {
  • [superdidReceiveMemoryWarning];
  • //Dispo搜索引擎优化fanyresourcesthatcanberecreated.
  • dataArray=nil;
  • }
不要健忘一点,每当tableviewreload的时分,必要判别一下dataArray,若为空则从头创立。




兼容iOS5与iOS6


好吧,重点来了,倘使但愿程序兼容iOS5与iOS6怎样办呢?
这里有一个小技能,我们必要对didReceiveMemoryWarning做一些四肢举动:

  • #pragmamark-
  • #pragmamarkMemorymanagement


  • -(void)didReceiveMemoryWarning
  • {
  • [superdidReceiveMemoryWarning];

  • if([selfisViewLoaded]&&self.view.window==nil){
  • self.view=nil;
  • }

  • dataArray=nil;
  • }
判别一下view是不是是window的一部分,假如不是,那末能够宁神的将self.view置为空,以调换更多可用内存。
如许会是甚么征象呢?假设,从viewcontrollerA跳转到viewcontrollerB,然后摹拟low-memory告诫,此时,viewcontrollerA将会实行self.view=nil;当我们从B退回A时,A会从头挪用一次viewDidLoad,此时数据全体从头创立,复杂兼容无压力~~
UPDATE-2013.5.21
1.批评中,一名仁兄供应了他的办理举措:

用代码控制view意思他们玩的都是高科技IB都是垃圾很多人也纠结到底用不用IB的确很多时候IB灵活度不行但是不需要灵活度的时候还不用IB那不是装X吗要是没人用苹果还开发IB干嘛早去掉了IB在很多时候节省很多工作量UINavigationController再说说NavigationController刚接触开发的时候不明白View和View之间怎么切换的
莫相离 该用户已被删除
沙发
发表于 2015-1-20 18:17:07 来自手机 | 只看该作者
才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。
海妖 该用户已被删除
板凳
发表于 2015-1-29 14:00:37 | 只看该作者
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
透明 该用户已被删除
地板
发表于 2015-2-6 01:45:45 | 只看该作者
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
小女巫 该用户已被删除
5#
发表于 2015-2-14 21:06:17 | 只看该作者
才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。
只想知道 该用户已被删除
6#
发表于 2015-2-18 19:48:52 | 只看该作者
中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,
金色的骷髅 该用户已被删除
7#
发表于 2015-3-6 10:04:27 | 只看该作者
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
小魔女 该用户已被删除
8#
发表于 2015-3-11 23:55:29 | 只看该作者
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
蒙在股里 该用户已被删除
9#
发表于 2015-3-19 16:31:57 | 只看该作者
每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。
老尸 该用户已被删除
10#
发表于 2015-3-21 23:24:47 | 只看该作者
近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-24 04:51:56 | 只看该作者
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
第二个灵魂 该用户已被删除
12#
发表于 2015-4-13 06:08:40 | 只看该作者
培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,
不帅 该用户已被删除
13#
发表于 2015-4-21 00:52:26 | 只看该作者
还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看,希望可以帮到你,谢谢。
灵魂腐蚀 该用户已被删除
14#
发表于 2015-4-27 03:59:36 | 只看该作者
首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书
变相怪杰 该用户已被删除
15#
发表于 2015-4-28 13:52:23 | 只看该作者
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
深爱那片海 该用户已被删除
16#
发表于 2015-5-6 07:11:59 | 只看该作者
看完这个你就可以有多种选择来踏入做应用的阶段
简单生活 该用户已被删除
17#
发表于 2015-5-9 09:54:16 | 只看该作者
看《iPhone 4与iPad开发基础教程》,跟着一步步来
爱飞 该用户已被删除
18#
发表于 2015-5-10 03:51:44 | 只看该作者
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
19#
发表于 2015-6-6 16:37:06 | 只看该作者
从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,
若天明 该用户已被删除
20#
发表于 2015-6-12 03:21:37 | 只看该作者
学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表