黑马软件工程师-OC学习笔记之ARC
黑马程序员-OC学习笔记之ARC
---------------------- IOS开发、Android培训、期待与您交流! ----------------------一、什么是ARC ARC是自动引用计数,苹果官方在Xcode4.2及以后版本中加入的一个内存管理机制,完全取代了程序员人工的内存管理,使得程序员只须关心程序本身。使用ARC,编译器会自动在代码中加入内存管理代码,是一个编译器特性,而不是运行时特性,当然,它也和JAVA的垃圾回收不同,它的本质和手动的内存管理是一样的,只是这些代码编译器会自动添加。下图是在Xcode中使用ARC:
二、ARC的特点 当我们使用ARC自动引用计数的时候,一些内存管理相关的代码就不能够再使用,如:retain,release,autorelease [super dealloc]等等。
Xcode自动引用计数后,用户就不能再手动管理内存。
三、ARC的原理 ARC的原理很简单,只要一个oc对象没有强指针指向它,系统就回收,反之只要有强指针指向它,就不会被回收。这里有一个概念:强指针和弱指针。默认情况下,指针都是强指针,而用weak关键字声明的指针就是弱指针。请看这一段代码:
其中p是强指针,p2是弱指针,那么在ARC机制中会发生什么呢?

如上图所示,只要一个oc对象没有强指针指向它,那么它马上就会被系统回收。
// // main.m // ARC // // Created by 葬花 桥 on 14-5-13. // Copyright (c) 2014年 itcast. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" int main() { Person *p = [[Person alloc] init]; __weak Person *p2 = [[Person alloc] init]; p.name = @"桥"; p2.name = @"小桥"; return 0; }
其中p是强指针,p2是弱指针,那么在ARC机制中会发生什么呢?
如上图所示,只要一个oc对象没有强指针指向它,那么它马上就会被系统回收。
三、@property 参数
在ARC中,@propery的参数由retain改为strong或weak,二者的区别是,strong表示成员变量的指针为强指针,后者是弱指针
在ARC中,@propery的参数由retain改为strong或weak,二者的区别是,strong表示成员变量的指针为强指针,后者是弱指针
---------------------- IOS开发、Android培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com
- 1【Coder Force】#360B - Levko and Array(DP 2分枚举)
- 2【编程直播】回约吗
- 3内核编译之ACPI异常,ACPI: [Package] has zero elements
- 4【编程直播】回约吗
- 5一路编程题实在是不知道哪个地方错了
- 6莫队算法总结(Markdown版)
- 7内核编译之ACPI异常,ACPI: [Package] has zero elements
- 8Java札记二十二.深入解析I/O编程之包装类
- 9内核编译之ACPI异常,ACPI: [Package] has zero elements
- 10内核编译之ACPI异常,ACPI: [Package] has zero elements
- 上一篇:awk grep 立刻刷缓存 结果定向入文件立即生效
- 下一篇:员工有薪水了