zoukankan      html  css  js  c++  java
  • 属性

    属性的特性是一些修饰符, 影响属性对应的settergetter方法的内部细节

    属性的特性第一类  读写性

    1.readonly 只读, 属性生成了  getter方法, 没有setter方法

    @property (readonly) NSString *gender;

     

    2.readwrite,可读可写,属性既生成了setter,也生成了getter 读写性控制中,readwrite是默认的修饰符, 所有属性,如果不加修饰,全部都是可读可写的

    @property (readwrite) NSString *name;

     

    3.setter= ,修改的是setter方法的方法名

    4.getter 修饰的是getter方法的方法名

    @property (readwrite, setter=aa:, getter=bb) NSInteger age;

    属性的特性第二类 原子性

    1.atomic,原子性,默认修饰符, 保证了实例变量在多线程情况下访问是安全的,通过不断的加锁解锁实现在同一时刻实例变量只能被一个线程访问,但是不断的加锁解锁会耗费大量的CPU性能,所以虽然是默认的,但是我们不会采用

    2.nonatomic,非原子性,属性常用的修饰符

     

    @property (nonatomic) NSString *habby;

     

    属性的特性第三类  语意特性

    语义不同,直接决定了属性对应的settergetter方法内部实现的不同

    1.assign 修饰的属性是非对象类型

    2.retain  所有对象类型的属性,都可以用retain修饰

    3.copy  copy也是用来修饰对象类型的属性,但是一定要保证,代表属性类型的这个类。必须接收了NSCopying协议,而且实现了copyWithZone :方法。字符串通常常用copy修饰

     

    @property (nonatomic) CGFloat height;

     

    @property (nonatomic, retain) NSString *school;

     

    @property (nonatomic, copy) NSString *major;

  • 相关阅读:
    readLine读取socket流的时候产生了阻塞
    Netty开发UDP协议
    Netty关闭客户端
    GIT 回退出错 Unlink of file 'xx' failed. Should I try again? (y/n) 解决办法
    linux 安全狗安装问题
    linux连接mysql命令
    CentOS7 64位下MySQL5.7安装与配置(YUM)
    nginx已经启动 无法访问页面
    Linux系统下我的/etc/sysconfig/路径下无iptables文件
    CentOS 7 下安装 Nginx
  • 原文地址:https://www.cnblogs.com/hjplcl/p/5204326.html
Copyright © 2011-2022 走看看