金色的骷髅 发表于 2015-1-18 11:38:20

IOS教程之制止Android内存保守(译)仓酷云

只能IB识别IB也没那么高深XIB文件解开之后就是一堆代码之前面过一家小公司看我当时写的程序里面用到了IB一脸不屑Android的使用被限定为最多占用16m的内存,最少在T-MobileG1上是如许的(固然如今已有几百兆的内存能够用了——译者注)。它包含德律风自己占用的和开辟者可使用的两部分。即便你没有占用全体内存的盘算,你也应当只管少的利用内存,以避免其余使用在运转的时分封闭你的使用。Android能在内存中坚持的使用越多,用户在切换使用的时分就越快。作为我的一项事情,我细心研讨了Android使用的内存保守成绩,年夜多半情形下它们是由统一个毛病引发的,那就是对一个高低文(Context)坚持了长工夫的援用。
在Android中,高低文(Context)被用作良多操纵中,可是年夜部分是载进和会见资本。这就是一切的widget城市在它们的机关函数中承受一个高低文(Context)参数。在一个及格的Android使用中,你一般可以用到两种高低文(Context):举动(Activity)和使用(Application)。举动(Activity)一般被传送给必要高低文(Context)参数的类大概办法:
Sourcecode

<br>

<br>

<br>@OverrideprotectedvoidonCreate(Bundlestate){super.onCreate(state);TextViewlabel=newTextView(this);label.setText("Leaksarebad");setContentView(label);}这就意味着谁人View有一个对全部举动(Activity)的援用而且对这个举动(Activity)中坚持的一切对象有坚持了援用;一般它们包含全部View的条理和它的一切资本。因而,假如你“保守”了高低文(Context)(这里“保守”的意义是你坚持了一个援用而且构造GC搜集它),你将形成大批的内存保守。假如你不敷当心的话,“保守”一全部举动(Activity)是件十分复杂的事变。
当屏幕的偏向改动时体系会默许的烧毁以后的举动(Activity)而且创立一个新的而且坚持了它的形态。如许的了局就是Android会从资本中从头载进使用的UI。如今设想一下,你写了一个使用,有一个十分年夜的位图,而且你其实不想在每次扭转时都从头载进。保存它而且每次扭转不从头加载的最复杂的举措就是把它保留在一个静态字段上:
Sourcecode

<br>

<br>

<br>privatestaticDrawablesBackground;@OverrideprotectedvoidonCreate(Bundlestate){super.onCreate(state);TextViewlabel=newTextView(this);label.setText("Leaksarebad");if(sBackground==null){sBackground=getDrawable(R.drawable.large_bitmap);}label.setBackgroundDrawable(sBackground);setContentView(label);}这段代码十分快,同时也错的够离谱。它保守了当第一次屏幕角度改动时创立的第一个举动(Activity)。当一个Drawable被附加到一个View,这个View被设置为drawable的一个回调。在下面的代码片段中,这意味着这个Drawable对TextView有一个援用,同时这个TextView对Activity(Context对象)坚持着援用,同时这个Activity对良多对象又有援用(这个几还要看你的代码了)。
这个例子是形成Context保守的最复杂的一个缘故原由,你能够看一下我们在主屏幕源码(检察unbindDrawables()办法)中是经由过程在Activity烧毁时设置保留过的Drawable的回调为空来办理这个成绩的。更加风趣的是,你能够创立一个context保守的链,固然这十分的糟。它们可让你缓慢的用光一切的内存。

在python中的函数__xxxNSString字符串NSArray数组NSDictionary字典这些都需要弄很清楚其他的类都是一个套路NSMutableArray这样带Mutable的类代表可变的

蒙在股里 发表于 2015-1-21 11:49:15

有办法利用自己手头的电脑立刻开始这个美妙旅程的。

飘灵儿 发表于 2015-1-28 07:40:11

还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看,希望可以帮到你,谢谢。

山那边是海 发表于 2015-1-30 14:16:45

AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

深爱那片海 发表于 2015-2-6 13:13:51

开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦

兰色精灵 发表于 2015-2-9 18:25:13

我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。

变相怪杰 发表于 2015-2-27 15:43:42

iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。

因胸联盟 发表于 2015-3-4 14:15:44

自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉

若天明 发表于 2015-3-11 20:00:44

最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。

分手快乐 发表于 2015-3-12 17:16:24

特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地

爱飞 发表于 2015-3-13 07:24:02

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

金色的骷髅 发表于 2015-3-17 10:10:43

还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看,希望可以帮到你,谢谢。

简单生活 发表于 2015-3-20 14:42:14

看《iPhone 4与iPad开发基础教程》,跟着一步步来

冷月葬花魂 发表于 2015-3-20 20:58:05

重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。

灵魂腐蚀 发表于 2015-3-26 14:09:43

这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。

仓酷云 发表于 2015-4-1 09:09:34

在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解

精灵巫婆 发表于 2015-4-1 23:08:38

最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。

谁可相欹 发表于 2015-4-6 01:11:15

iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

海妖 发表于 2015-4-13 08:56:46

重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。

活着的死人 发表于 2015-4-13 21:18:54

每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。
页: [1] 2
查看完整版本: IOS教程之制止Android内存保守(译)仓酷云