zoukankan      html  css  js  c++  java
  • ios 内存管理

    Objective-C提供了三种内存管理方式:manual retain-release(MRR,手动管理),automatic reference counting(ARC,自动引用计数),garbage collection(垃圾回收)。iOS不支持垃圾回收;ARC作为苹果新提供的技术,苹果推荐开发者使用ARC技术来管理内存;这篇笔记主要讲的是手动管理。

    内存管理的目的是:
    1.不要释放或者覆盖还在使用的内存,这会引起程序崩溃;
    2.释放不再使用的内存,防止内存泄露。iOS程序的内存资源是宝贵的。

    MRC手动管理内存也是基于引用计数的,只是需要开发者发消息给某块内存(或者说是对象)来改变这块内存的引用计数以实现内存管理(ARC技术则是编译器代替开发者完成相应的工作)。一块内存如果计数是零,也就是没有使用者(owner),那么objective-C的运行环境会自动回收这块内存。

    objective-C的内存管理遵守下面这个简单的策略:
    注:文档中把引用计数加1的操作称为“拥有”(own,或者take ownership of)某块对象/内存;把引用计数减1的操作称为放弃(relinquish)这块对象/内存。拥有对象时,你可以放心地读写或者返回对象;当对象被所有人放弃时,objective-C的运行环境会回收这个对象。
    1.你拥有你创建的对象
    也就是说创建的对象(使用alloc,new,copy或者mutalbeCopy等方法)的初始引用计数是1。
    2.给对象发送retain消息后,你拥有了这个对象
    3.当你不需要使用该对象时,发送release或者autorelease消息放弃这个对象
    4.不要对你不拥有的对象发送“放弃”的消息

    只要有梦想,人生就有意义。。。
  • 相关阅读:
    Day5:面向对象的定义(下)
    SQL 查询中not in 与 not exists 的区别
    SQL 语句的执行顺序
    SQL server 连接 查询
    SQL server 约束
    静态类与非静态类,静态成员及使用方法
    HR面试总结
    值类型与引用类型精解
    面试技巧
    MVC与设计模式的关系及MVC的实现原理和设计原理
  • 原文地址:https://www.cnblogs.com/jiafuyang/p/4815919.html
Copyright © 2011-2022 走看看