zoukankan      html  css  js  c++  java
  • OC基础(14)

    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];
    }
    

  • 相关阅读:
    [kuangbin带你飞]专题十二 基础DP1 E
    hdu 1203 I NEED A OFFER! (01背包)
    hdu 2602 Bone Collector (01背包)
    hdu 4513 吉哥系列故事——完美队形II (manacher)
    hdu 2203 亲和串 (KMP)
    hdu 1686 Oulipo (KMP)
    hdu 1251 统计难题 (字典树)
    hdu 2846 Repository (字典树)
    hdu 1711 Number Sequence (KMP)
    poj 3461 Oulipo(KMP)
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5016886.html
Copyright © 2011-2022 走看看