1.属性定义:表征了对象某一时刻的特征,专门供外界进行设置和访问的。
2.属性的设置:通过@property进行设置,通常配合@synthesize使用,后者用于访问。
3.如果将某变量设置成属性,系统自动生成的设置器和访问器如下:
例:
-(void)setAge:(int)aAge
{
_age = aAge;
}
-(int)age
{
return _age;
}
4.属性赋值:
以上例子使用 int 类型来进行设置,不是对象类型的,只能赋值给属性,没有涉及内存管理。
如果使用对象进行对属性赋值,则涉及到内存管理。看以下例子(省略部分代码,只写本文内容涉及到的代码):
@property (retain, nonatomic) Teacher *teacher;
其内存设置的代码为:
-(void)setTeacher:(NSString *)aTeacher
{
if (_teacher != aTeacher )
{
[_teacher release]; //先将其原本的内存清空
_teacher = [aTeacher retain]; //再把当前对象内存中的内容复制一份给属性
}
}
5.属性的释放:
使用自己重写的dealloc方法进行对属性的释放
-(void)dealloc
{
[_teacher release]; //先释放本类的属性
[super dealloc]; //然后调用释放父类的dealloc方法进行父类属性的释放
}
6.属性的赋值方法
方法一:
UIWindow * win = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
win.backgroundColor = [UIColor whiteColor]; // 给其添加背景颜色
self.window = win;// 属性赋值
[win release]; // 自己创建的要释放
方法二:
CGRect screen = CGRectMake(0, 0, 320, 568);
self.window = [[[UIWindow alloc] initWithFrame:screen] autorelease]; // 使用自动释放,就不用领写一个语句释放了
self.window.backgroundColor = [UIColor whiteColor];