zoukankan      html  css  js  c++  java
  • 属性,属性赋值及其内存管理

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

  • 相关阅读:
    RHEL7 安装Docker-CE
    Django2.2 Vue 前后端分离 无法访问Cookie
    Vue error: Parsing error: Unexpected token
    Python Warning
    Http post 接收 html .netcore
    Echart 中国地图
    CKplayer 视频播放插件
    (转)解决windows10下无法安装.net framework 3.5,错误代码0x800F081F
    第1章 信息化和信息系统
    .net core 添加 swagger
  • 原文地址:https://www.cnblogs.com/Songxin/p/3558041.html
Copyright © 2011-2022 走看看