iphone開發中的內存分配

1、內存分配、釋放成對出現

 

2、注意copy,retain,assign操作符的區別(copy,retain同alloc一樣需要release,assign指的是將對象指向另一個對象)

 

3、NSArray,NSDictionary,NSMutableArray,NSMutableDictionary等容器類,在添加對象到這些類對象時,容器類會自動調用一次retain,即使對象調用release,reference count只是減一,可能不為0,意味對象還有引用,不可釋放

 

4、連續重複分配內存的過程(如while、for循環中alloc)最好創建自己的自動釋放池NSAutoreleasePool,或alloc和release操作放到循環閉包的外面(繁體看着也挺費勁的,換簡體了),这是由于频繁地向操作系统申请内存地址和释放内存的过程非常损耗cpu时间,如果循环内部实现的逻辑十分复杂,不能将alloc和release抽离出循环体外,那么就要创建自己的内存管理池,其实就是弄个pool对象,把所有的alloc的对象标记为autorelease,在最后把内存池release掉,那么系统会在需要的时候释放整理所有的autorelease对象,这就是为什么有时候autorelease对象在作用域范围外还有可能是有效的

 

5、避免不常用的对象驻留内存,iphone开发跟桌面开发不一样这你我都知道,所以没必要在程序初始化的时候将某些资源(比如小图片)加载进内存,这里情况就非常类似web开发时候用到的懒加载(延迟加载),原因其实是一样的,iphone是内存的限制,web服务是带宽的限制,当然这也要自己找好一个平衡点,像第4点提到的频繁的向os要内存也会拖慢效率的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值