码迷,mamicode.com
首页 > 其他好文 > 详细

OC基础(14)

时间:2015-12-03 19:05:02      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

Xcode设置

本小节知识点:

  1. 【掌握】如何关闭ARC功能
  2. 【掌握】如何开启僵尸对象监控

1.如何关闭ARC功能

  • 要想手动调用retain、release等方法 , 就必须关闭ARC功能技术分享

2.如何开启僵尸对象监控

  • 默认情况下,Xcode是不会管僵尸对象的,使用一块被释放的内存也不会报错。为了方便调试,应该开启僵尸对象监控技术分享技术分享

     

内存管理原则

本小节知识点:

  1. 【掌握】内存管理原则
  2. 【掌握】多对象内存管理
  3. 【掌握】set方法内存管理
  4. 【掌握】dealloc方法的内存管理

1.内存管理原则

  • 苹果官方规定的内存管理原则

    • 谁创建谁release :

      • 如果你通过alloc、new、copy或mutableCopy来创建一个对象,那么你必须调用release或autorelease
    • 谁retain谁release:

      • 只要你调用了retain,就必须调用一次release
  • 总结一下就是

    • 有加就有减
    • 曾经让对象的计数器+1,就必须在最后让对象计数器-1

2.多对象内存管理

  • 单个对象的内存管理, 看起来非常简单

  • 如果对多个对象进行内存管理, 并且对象之间是有联系的, 那么管理就会变得比较复杂

  • 其实, 多个对象的管理思路 跟很多游戏的房间管理差不多

    • 比如斗地主 \ 劲舞团 \ QQ音速
    •  技术分享
  • 总的来说, 有这么几点管理规律

    • 只要还有人在用某个对象,那么这个对象就不会被回收
    • 只要你想用这个对象,就让对象的计数器+1
    • 当你不再使用这个对象时,就让对象的计数器-1

3.set方法内存管理

  • (1)retain需要使用的对象
  • (2)release之前的对象
  • (3)只有传入的对象和之前的不同才需要release和retain
- (void)setRoom:(Room *)room
{
    // 避免过度释放
    if (room != _room)
    {
        // 对当前正在使用的房间(旧房间)做一次release
        [_room release];

        // 对新房间做一次retain操作
         _room = [room retain];
    }
}

4.dealloc方法的内存管理

- (void)dealloc
{
    // 当人不在了,代表不用房间了
    // 对房间做一次release操作
    [_room release];
    [super dealloc];
}

OC基础(14)

标签:

原文地址:http://www.cnblogs.com/zhoudaquan/p/5016886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!