iPhone开发 - 内存泄露(不断更新)

我是做应用程序的iphone程序员,主做应用程序,偶尔客串个把cocos2d有戏,入行刚刚满一年,在这下半年,越来越发现程序测试到最后,一般会留 下两个问题:1、内存泄露     2、用户体验差 。 而后者,我在之前的文章中也曾经表态过我的态度,但是很多时候,这些受策划的影响会更大。往往,内存泄露才识最令人头疼的,最近在整理我所碰到的内存泄露 实例,希望给大家有所帮助,不断更新,有兴趣的朋友可以一起写,留言给我或者给我邮件都行,我会给你加上备注。

1、关于声明为 IBOutlet 的对象的释放
在 我们的应用程序中,使用InterfaceBuilder 可以帮助大家节省更多制作界面方面的时间。所以很多人习惯用IBOutlet。请记住,在iPhone,iPad程序中,所有的声明为IBOutlet的 对象都需要在最后的dealloc方法中进行 release。并且建议每一个声明为IBOutlet的对象都是用@property (nonamatic, retain)。

2、关于UIScrollView的特殊泄露
之前做图片查看模块的时候,频频会出现内存泄露问题,最终,查到的结果是,UIScrollView泄露。当我们在程序中使用了UIScrollView的时候,请在dealloc的时候,对scrollview及其subviews进行释放:
for (UIView *innerview in [scrollview subViews]){
[innerview removeFromSuperView];
}
[scrollview release];
scrollview = nil;

3、尽量少用autorelease对象,手动管理内存,虽然可能粗心等原因造成内存泄露,但是用instrument可以很容易检测出来,并且能解释释放内存。而使用autorelease对象时,在引入json、sqlite框架时,可能会有莫名其妙的找不到原因的内存泄露。

4、关于对象类型一致性的问题:需要从服务器获取数据的app,从服务器端返回的数据应当被认定为类型不可信(如:同过php脚本返回的json数据中的数字),由于服务器端程序语言可能是类型不严格的,导致在对返回数据做处理时对数据类型处理不严格。可能返回的数据类型并非客户端认为(或需求)的数据类型(如:php返回json含数字,可能被解析成NSNumber, NSString, NULL)。这时,需要做类型判断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值