zoukankan      html  css  js  c++  java
  • 属性参数


    如何使用@property进行自动实现呢?答案就是使用属性参数,例如car属性的setter方法,可以通过@property定义如下:

    @property (nonatomic,retain) Car *car;
    你会发现此刻我们不必手动实现car的getter、setter方法程序仍然没有内存泄露。其实大家也应该都已经看到前面Person的name属性定义的时候我们同样加上了(nonatomic,copy)参数,这些参数到底是什么意思呢?

    propertyParameter

    @property的参数分为三类,也就是说参数最多可以有三个,中间用逗号分隔,每类参数可以从上表三类参数中人选一个。如果不进行设置或者只设置其中一类参数,程序会使用三类中的各个默认参数,默认参数:(atomic,readwrite,assign)

    一般情况下如果在多线程开发中一个属性可能会被两个及两个以上的线程同时访问,此时可以考虑atomic属性,否则建议使用nonatomic,不加锁,效率较高;readwirte方法会生成getter、setter两个方法,如果使用readonly则只生成getter方法;关于set方法处理需要特别说明,假设我们定义一个属性a,这里列出三种方式的生成代码:

    assign,用于基本数据类型

    -(void)setA:(int)a{
    _a=a;
    }
    retain,通常用于非字符串对象

    -(void)setA:(Car *)a{
    if(_a!=a){
    [_a release];
    _a=[a retain];
    }
    }
    copy,通常用于字符串对象

    -(void)setA:(NSString *)a{
    if(_a!=a){
    [_a release];
    _a=[a copy];
    }
    }

  • 相关阅读:
    牛儿
    Tarjan算法
    There is no resul…
    Struts2+JQuery+Json登陆实例
    struts2+jquery+easyui+datagrid+j…
    Spring:JdbcTemplate使用指南
    使用Spring的jdbcTemplate进一步简…
    JDBC连接MySQL数据库及示例
    PLSQL导入/导出数据方法
    PLSQ创建用户L
  • 原文地址:https://www.cnblogs.com/xiamo123/p/4754932.html
Copyright © 2011-2022 走看看