• OC-@property内存管理中的参数


    //1.生产get与set方法的声明

    //2.生成get与set方法的简单实现

    /*       - (void)setCar:(Car *)car{

                  _car = car;

              }

            

            - (Car *)car{

                 return _car;

            }

             */

    //3.若果你没有声成名相对象的成员变量,那么他会自动生成一个_开头的私有成员变量,这个成员变量分类不能用,子类不能用,如果想用的话,再重新定义一下成员变量

    //这个@property自动生成的_开头的成员变量,是私有变量,私有变量是子类能继承,但是不能访问,同理,分类也不行,(@property int age;)

    //如果重新定义一个int_age,子类还是不能访问,但是此时分类可以访问,只要重新定义一个,不管是什么类型的,分类都可以访问,{int _age;}

    //@property 参数分为4类

    /*

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

    retain: 要生成符合内存管理原则的set方法(应用与对象类型),(只在setter中release旧值,retain新值)

             - (void)setCar:(Car *)car{

                 

                 if (_car != car){

                 

                 [_car release];//release旧值

                 

                 _car  = [car retain];//retain新值

             }

    assign: 直接赋值,(对象类型,基本数据类型)

    copy :  (后面讲解)

    */

    //2.多线程相关

    //nonatomic: 不生成多线程相关代码,使用这个就可以了(效率高一点)

    //atomic:生成多线程相关代码(不写默认是这种方式)

    //实际开发中,只要是对象类型的@property都写成下面

    //3.是否要生成set与get方法

    //readwrite: 可读可写属性,同时生成set与get方法

    //readonly : 只读属性,只生成get方法

    //4.set与get方法名称相关的参数

    //setter:设置生成的set方法名称

    //getter:设置生成的get方法名称

    @property (nonatomic,retain) Car * car;

    @property (nonatomic,retain)NSString * name;

    @property (nonatomic,assign)int age; //int float double char

    @property (nonatomic,assign)int weight;

    @property (nonatomic,assign,readonly)int idCard;

    @property (nonatomic,assign,setter = abc:,getter = zhuanghuimei)int height;

    /**

     [p abc:100];

     int b = [p zhuanghuimei];

     p.height = 100;//[p abc:10];

     NSLog(@"he %d",p.height);//[p zhuanghuimei];

     //p 0

     */

    //  改变set与get方法名称很多都是用在BOOL类型的变量

    @property (nonatomic,assign,setter = isDeid:,getter = isDeid)BOOL isDeid;

    //因为上面这个自动生成的是

    //-(void)setIsDeid:(BOOL)isDeid;但是以前也说了,BOOL类型都是is开头,所以才用这个方法来设置is开头的,如下:

    //- (void)isDeid:(BOOL)isDeid;

  • 相关阅读:
    Hadoop 2.2.0单节点的伪分布集成环境搭建
    CentOS系统中出现错误--SSH:connect to host centos-py port 22: Connection refused
    JUnit 5和Selenium基础(三)
    JUnit 5和Selenium基础(二)
    JUnit 5和Selenium基础(一)
    如何对N个接口按比例压测
    性能测试中标记每个请求
    初学者的API测试技巧
    Web安全检查
    Groovy重载操作符
  • 原文地址:https://www.cnblogs.com/wxios/p/4174982.html
Copyright © 2020-2023  润新知