属性,属性赋值及其内存管理

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]; 

原文地址:https://www.cnblogs.com/Songxin/p/3558041.html