@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类型)


@property Book  *book  // 这个语句是直接赋值的,不会有retain

@property (retain) Book  *book  // 生成的set语句会有retain的,相当于
- (void)setBook : (Book *)book
{

	if (_book = book)
	{
		[_book  release];
		_ book = [book  retain];
	}
}

// 当然,如果property中又retain ,则实现中需要实现dealloc语句
- (void)dealloc
{
	[_book release];
	[_name release];
	[super dealloc];
}

1.@class的作用:仅仅告诉编译器,某个名称是一个类
@class Person; // 仅仅告诉编译器,Person是一个类


2.开发中引用一个类的规范
1> 在.h文件中用@class来声明类
2> 在.m文件中用#import来包含类的所有东西


3.两端循环引用解决方案
1> 一端用retain
2> 一端用assign


发布了59 篇原创文章 · 获赞 5 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章