黑马程序员[email protected]和ARC

@property和ARC

@property和ARC都是编译器特性,系统会帮我们自动生成代码

property参数

1.set方法内存管理相关的参数

retain : release旧值,retain新值(适用于OC对象类型)

assign : 直接赋值(默认,适用于非OC对象类型)

copy   : release旧值,copy新值

2.是否要生成set方法

readwrite : 同时生成setter和getter的声明、实现(默认)

readonly  : 只会生成getter的声明、实现

3.多线程管理

nonatomic : 性能高 (一般就用这个)

atomic    : 性能低(默认)

4.setter和getter方法的名称

setter : 决定了set方法的名称,一定要有个冒号 :

getter : 决定了get方法的名称(一般用在BOOL类型)

ARC

即自动引用计数器,全名是Automatic Reference Counting,简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。

该机能在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机能。简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码

引用关键字

指针分2种:

1 强指针:默认情况下,所有的指针都是强指针 __strong

2 弱指针:__weak

ARC的判断准则:只要没有强指针指向对象,就会释放对象

ARC特点

1 不允许调用release、retain、retainCount

2 允许重写dealloc,但是不允许调用[super dealloc]

3 @property的参数

1> strong :成员变量是强指针(适用于OC对象类型)

2> weak :成员变量是弱指针(适用于OC对象类型)

3> assign : 适用于非OC对象类型

4 以前的retain改为用strong

__weak Person *p = [[Person alloc] init]

表示定义了一个被弱指针指向的对象,在ARC中一创建出来就会被回收,错误的写法

循环引用

当两端循环引用的时候,解决方案:

ARC

1端用strong,另1端用weak

非ARC

1端用retain,另1端用assign

时间: 2024-11-21 00:54:28

黑马程序员[email protected]和ARC的相关文章

黑马程序员[email protected]和@synsthesize的使用

一.@property和@synthesize的基本使用 @property :可以自动生成某个成员变量的setter和getter的声明(@property int age;).写在@interface里面: @synthesize :自动生成age的setter和getter,并且在方法内部访问的是_age这个成员变量(@synthesize age = _age; // 如果后面不写=_age默认就是访问age成员变量).写在@implementation里面: 二.@property和@

黑马程序员[email protected],@synthesize使用细节和id

一.@property和@synthesize 关键字以及使用细节 这两个关键字是编译器的特性,帮助我们有效的减少不必要代码的书写. 1.@property可以自动生成某个成员变量的setter和getter方法声明 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 { 5 int _age; 6 // int age; 7 int _height; 8 double _weight; 9 NSStri

黑马程序员 [email&#160;protected]增强(神器)

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 1.@property 增强的介绍 1> Xcode 4.4之后,@property 独揽了 @synthesize  的功能,也就是说@property可以同时生成sette和getter的声明和实现 2>默认情况下,setter 和 getter的实现中,会去访问下划线_开头的成员变量 例如: 1 #import <Foundation/Foundation.h> 2 @interface

黑马程序员 [email&#160;protected]和@synthesize

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 1.@property 和@synthesize 的作用 (1) 通过@property可以自动生成属性的set,get方法的声明部分 生成的是set,get方法是哪个属性的,@property后面的名称就是属性去掉下划线后的部分 例如: - (void)setName: (NSString *)name; - (NSString *)name; 这两行代码可以用 @property (NSString *

黑马程序员——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

黑马程序员-OC学习笔记之ARC

---------------------- IOS开发.Android培训.期待与您交流! ----------------------一.什么是ARC        ARC是自动引用计数,苹果官方在Xcode4.2及以后版本中加入的一个内存管理机制,完全取代了程序员人工的内存管理,使得程序员只须关心程序本身.使用ARC,编译器会自动在代码中加入内存管理代码,是一个编译器特性,而不是运行时特性,当然,它也和JAVA的垃圾回收不同,它的本质和手动的内存管理是一样的,只是这些代码编译器会自动添加.

黑马程序员_API

------- android培训.java培训.期待与您交流! ---------- ======================API========================================= 看api的步骤: 1.看类的说明.其所属的包以及出现的版本. 2.看其构造函数. 3.看普通的方法.看时注意参数,和返回值类型. Object类 1. private static native void registerNatives (); 见到本地关键字修饰的方法,这个方

黑马程序员-面向对象-Object类

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>.<a href="http://edu.csdn.net"target="blank">.Net培训</a>.期待与您交流! ---------------------- 一.Object类中的equals(

黑马程序员_OC学习笔记之Foundation框架集合类

OC--集合类 1.OC集合类包括NSArray,NSSet,NSDictionary都是以面向对象的方式操作数组,而且OC数组不像C语言中的数组只能存放同一种数据类型,它可以存放任意类型的对象,但是不能存放非OC对象类型如基本数据类型int,struct,enum等 2.OC数组是以对象的方式存在,因此在创建的时候需要为创建的对象前面加* 3.NSArray数组一旦创建就决定了是不是可变,而且永远是可变或不可变 4.NSArray数组和子类NSMutableArray的基本操作: 1>使用NS