黑马程序员——ARC机制小结

ARC全称为Automatic Reference Counting,是一种编译器特性。

  在IOS5之前是没有ARC机制的,那时候内存管理全部要靠程序员自己来。有关内存管理的代码,简单却烦琐。而且还容易发生内存泄漏的错误。自从IOS5之后 编译器增加了自动在适当地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理一切的内存管理方面的问题。

  那么ARC是通过什么原理来管理内存问题的呢?它有一个判断的准则:只要没有强指针指向对象,就会释放对象。在ARC机制下不允许调用release、retain、retainCount;允许重写dealloc,但不允许调用[super dealloc]。在@property中的应用是将retain改为strong其他不变就行了。那什么是强指针呢,默认情况下,所有指针都是强指针。有强指针就会有弱指针;而弱指针用到的情况不是很多,一般遇到循环引用问题时,在ARC机制下,需要将一端用strong一端用weak;非ARC机制下,一端用retain,一端用assign;

http://bbs.itheima.com/forum.php

时间: 2024-10-12 02:47:12

黑马程序员——ARC机制小结的相关文章

黑马程序员___多线程小结

----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 进程和线程 进程是正在进行中的程序,指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程. Java程序的进程里有几个线程:主线程, 垃圾回收线程(后台线程) 线程是指进程中的一个执行任务(控制单元),一个进程中可以运行多个线程,多个线程可共享数据.多线程:在同一个进程中同时运行的多个任务;一个进程至少有一个线程,为了提高效率,可以在一个进程中

黑马程序员——打印流小结

//打印流 /* 1.字节打印流,他可以获取的参数有: 1.File对象 2.字符串 3.字节输出流,可以实现自动刷新 2.字符打印流,他可以获取的参数有: 1.File对象 2.字符串 3.字节输出流,可以实现自动刷新 4.字符输出流,可以实现自动刷新 */ import java.io.*; import java.io.PrintWriter; import java.io.BufferedReader; public class Print{ public static void mai

ios黑马程序员--ARC

强指针:默认情况下所有的指针都 是强指针型(strong) 在Arc当中 ,一个对象只要没有强指针引用, 那么它就会被系统回收 弱指针:弱指针不影响对象的回收 在Arc当中,所有的跟手动管理内存 相关的方法都不能调用比如说 dealloc不能重写父类 了(不能 super dealloc) //__weak定义一个弱指针 __weak Person * p2 = p//弱指针 不影响对象 //强指针引用使用OC对象类型, @property (nonatomic,strong) 我们用别人的项目

黑马程序员——OC学习小结------arc,block,protocol(协议)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.ARC的判断准则:只要没有强指针指向对象,就会释放对象 1.ARC特点 1> 不允许调用release.retain.retainCount 2> 允许重写dealloc,但是不允许调用[super dealloc] 3> @property的参数 * strong :成员变量是强指针(适用于OC对象类型) * weak :成员变量是弱指针(适用于OC对象类型) * assign

黑马程序员——反射机制

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 反射机制 下面我们一起来探讨一下java的反射机制吧!功能太强大了,哈哈!  (一).  定义 Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并

黑马程序员------反射机制

------- android培训.java培训.期待与您交流! ---------- 1.1 反射机制 * JAVA反射机制是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法: * 对于任意一个对象,都能够调用它的任意一个方法和属性: * 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. * * *反射其实就是动态加载一个指定的类,并获取该类中的所有的内容. *而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操

黑马程序员——OC学习小结------OC入门

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一. 1.使用了基类NSObject,要调用Foundation框架的Foundation.h头文件. 2.一个完整的类,包含了类的声明和实现: 3.类的声明:声明对象的属性和行为 @interface Car : NSObject { // 用来声明对象属性(实例变量\成员变量,默认会初始化为0) // @public可以让外部的指针间接访问对象内部的成员变量 @public int whe

黑马程序员-类加载机制和反射。

------- android培训.java培训.期待与您交流! ---------- Class类 JAVA程序中的类属于同一个事物,描述这类事物的类就叫Class 一个类被加载到内存当中,占用一片存储空间,这个空间里面的内容就该类字节码,不同的类的字节码是不同的,所以他们在内存中的内容也是不相同的,这一个个空间可以分别咏鹅一个个对象来表示,这些对象. 但是我们可以总结出,这些对象也会有相同的类型,这个类型就是Class类 基本的 Java 类型(boolean.byte.char.short

黑马程序员___java注解小结

----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 注解是java 的一个新的类型(与接口很相似),它与类.接口.枚举是在同一个层次,它们都称作为java 的一个类型(TYPE).它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明,注释.它的作用非常的多,例如:进行编译检查.生成说明文档.代码分析等. JDK提供的几个基本注解 a. @SuppressWarnings 该注解的作用是阻止编译器发出某