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

06OC之内存管理

时间:2015-11-01 21:08:29      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

在高级语言中,例如C#是通过垃圾回收机制(GC)来解决这个问题,但是在OC并没有类似的垃圾回收机制,因此必须由程序员手动去维护。今天就讲讲OC中的内存管理:

一、内存管理原理

在Xcode4.2之后的版本,由于引入了ARC(Automatic Reference Counting)机制,程序编译Xcode会自动给你的代码添加内存释放代码,如果编写手动释放代码Xcode会报错,因此在今天的内容,如果使用Xcode4.2以上的版本,必须手动关闭ARC,这样有助于理解OC的内存机制。关闭的步骤如下:
项目设置->Building-setting->搜索garbage找到Objective-C Automatic Reference Counting,设置成No即可。技术分享

 

在C#中有GC给我们自动管理内存,当我们实例化一个对象之后,通常会有一个变量引用这个对象,变量是存储对象的内存地址,当不再需要引用这个对象时,GC就会自动回收这个对象,简单的说,当一个对象没有任何对象引用的时候,就会被回收。

举个简单的例子:

using System;
namespace GC
{
    class Program
    {
        private static void Test()
        {
            object o=new object();
        }

        static void Main(string[] args)
        {
            Test();
        }
    }
}

上述的代码,在Test方法中,通过new Object()创建了一个对象,o是一个对象的引用,它是一个局部变量,作用域为Test方法体内。当在Main方法执行完test,O就会被释放掉,因为没有变量在引用new Object()这个对象,因此GC会自动回收这个对象所占用的空间。

 

06OC之内存管理

标签:

原文地址:http://www.cnblogs.com/duyao/p/4928525.html

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