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

  • 相关阅读:
    比较全的笔记
    ios路线
    字符串颜色
    ios 开发学习步骤
    百度地图反地理
    p12证书
    ios官方demo
    ios视频网盘
    图片穿透
    OC温习一:基本数据类型
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5016886.html
Copyright © 2011-2022 走看看