zoukankan      html  css  js  c++  java
  • property属性

    属性变量可以理解为成员变量加上几个方法

    @property属性实现了三步
    例如:@property(nonatomic,strong) int age;
    1.提供了一个成员变量_age(在属性变量名前加了下划线)
    2.提供了set(setAge) get(age)方法的声明(无get 防止与之后的某个关键词混淆) 注意大小写
    3.提供了 set get 方法的实现

    property关键字:
    线程是否安全:
    1.nonatomic:线程不安全的 没有加锁解锁机制 效率高
    2.atomic: 线程安全 有加锁解锁机制 效率低
    内存管理-引用计数 retainCount
    只要是oc的对象类型 就用strong或者retain
    字符串对象使用copy
    3.strong:声明对一个不是自己创建(系统创建的)的对象的拥有权 retaincount+1
    4.weak:不声明对一个不是自己创建的对象的拥有权(弱引用)
    5.retain:(老版本中 现同strong)
    6.copy:拷贝一个已经创建的对象 对其拥有拥有权 retaincount=1

    7.assign:修饰c语言的基本数据类型 int float bool NSlnteger
    对方法的管理:
    8.setter= 修改set方法的方法名 setter = setMybrand: 有参数要加冒号

    9.getter=修改get方法的方法名 getter = getBrand

    10.readwrite:提供了set get方法 可读可写

    11.readonly: 提供了get方法 只可读
    例如:@property(nonatomic,strong,readonly)NSArray *array;

    某些情况下要重写set get方法 (注意事项):
    重写set方法 注意不要使用self.来为这个属性赋值(等价于调用set方法 )死循环—— 对数据需要做改变时 希望第一时间知道数据来了(即要赋值时也即调用set方法时)

    重写get方法 不要使用self.来访问(等价于调用get方法)这个属性的值 也是死循环——懒加载 :对于某种东西当要使用时(即它访问该对象时也即调用get方法时)再下载而不是程序一运行就下载所有

    假设在某个类当中定义了name这个属性变量 

    则在该类的实现文件中 可以有以下三种引用方法:

    -(void)getup{
        //NSLog(@"%@起床了",_name);//下划线只有在类本身中使用 所以这里没有_brand _flavor 该方法易出现内存错
        
        NSLog(@"%@起床了",self.name);
       // NSLog(@"%@起床了",[self name]);
    }

    对于self的认识:

    self的理解:凡是调用当前这个类里面的方法或者属性变量 就要用self
    self代表谁(某个类或者某个对象) 就看谁在调用这个方法

  • 相关阅读:
    linux 下的文件IO基础
    git命令-切换分支
    专利搜索引擎
    在此位置打开CMD
    2017 JAVA神器 Btrace详细介绍
    linux下的find文件查找命令与grep文件内容查找命令
    Linux如何查看JDK的安装路径
    JavaScript SetInterval与setTimeout使用方法详解
    ssh 登录出现Are you sure you want to continue connecting (yes/no)?解决方法
    ssh连接提示 "Connection closed by remote host"
  • 原文地址:https://www.cnblogs.com/kinghyt/p/10392083.html
Copyright © 2011-2022 走看看