zoukankan      html  css  js  c++  java
  • OC语法7——内存管理之@property参数

    @property的参数:

      我们已经知道为了给开发者提供便捷,OC提供了@porperty关键字,它可以自动生成属性的set和get方法。

      但是我们又知道,在OC中还面临者对象内存管理的问题,而且我们遵循“谁创建,谁释放”的原则管理内存。

      所以我们得重写set方法:把原先的成员变量(对象)release掉,然后给新成员变量retain。

      还得重写realloc方法:在realloc中调用release,释放该对象。

      呵呵。我们引入@property的目的就是为了让其自动生成set和get方法的,现在又得我们重写set方法,所以我们必须有新的解决方案。

      其实OC引入@property的关键字是允许添加参数的。总共有3个类型的参数。当我们不写参数时它默认是:

    @property (atomic,readwrite,assign) Book *book;

    atomic的意思是:多线程下安全;

    readwrite:既可读取值,又可赋值(生成set和get方法);

    assign: 不进行内存管理,直接给属性赋值。

    @property的参数总共有3种类型,下表是全部的参数解释:

    在没有多线程的问题时,我们选nonatomic参数,它运行速度比较快。

    因为我们要进行内存管理,所以得写retain参数。它先会对原先的对象release,再给新对象retain。这样,便可以取代手动重写set方法这种体力劳动了!

    @property (nonatomic,retain) Book *book;

    assign,retain,copy三个参数的功能:

  • 相关阅读:
    摘记
    【题解】网格 & Single Cut of Failure(trick:答案上界)
    题解 CF1404C 【Fixed Point Removal】
    Linux IO模型知识梳理
    Java IO模型知识梳理
    如何回答什么是线程安全?
    MySQL主从复制与备份
    MySQL的高性能索引策略
    CAS(乐观锁)的原理解析
    Java虚拟机的类加载机制
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4297293.html
Copyright © 2011-2022 走看看