zoukankan      html  css  js  c++  java
  • iOS中常用属性的关键字的使用说明

    属性关键字的作用

    现在我们iOS开发中,基本都是使用ARC(自动引用计数)技术,来编写我们的代码。因此在属性property中我们经常使用的关键字有strong,weak,assign,copy,nonatomic,atomic,readonly,readwrite,getter,setter。可能经常写代码的朋友,已经很清楚在什么情况下会使用他们。但可能并不清楚他们的含义,下面我先通过一张表总结下他们的作用:

    属性关键字的作用

    属性关键字

    对属性的作用

    strong

    释放旧对象 将旧对象的值赋予输入对象 ,再提高输入对象的索引计数为 1 ,常使用在继承自 NSObject 的类。  

    weak

    weak 不增加对对象的引用计数,也不持有对象,因此不能决定对象的释放。它比 assign 多了一个功能,当对象消失后自动把指针变成 nil

    assign

    简单赋值 ,不更改索引计数 ,适用于基础数据类型( NSInteger CGFloat )和 C 数据类型( int float double char 等)简单数据类型。

    copy

    建立一个索引计数为 1 的对象 然后释放旧对象   对 NSString 它指出 ,在赋值时使用传入值的一份拷贝 ,拷贝工作由 copy 方法执行,此属性只对那些实行了 NSCopying 协议的对象类型有效。

    atomic

    和 nonatomic 用来决定编译器生成的 getter 和 setter 是否为原子操作 , atomic 设置成员变量的 @property 属性时   默认为是 atomic 提供线程安全 。在多线程环境下 ,原子操作是必要的 否则会引起错误的结果 。

    nonatomic

    非原子性访问 对于属性赋值的时候不加锁 ,多线程并发访问会提高性能,如果不加此属性 则默认是两个访问方法都为原子型事务访问。

    readonly

    此标记说明属性是只读的  

    readwrite

    此标记说明属性会被当成读写的   这也是默认的属性

    unsafe_unretained

    跟 weak 类似,声明一个弱引用,但是当引用计数为 0 时,变量不会自动设置为 nil

    getter

    指定 get 方法,并需要实现这个方法 。必须返回与声明类型相同的变量,没有参数

    setter

    指定 set 方法,并需要实现这个方法 。带一个与声明类型相同的参数,没有返回值(返回空值)

    当声明为 readonly 的时候,不能指定 set 方法

  • 相关阅读:
    关于<form>标签
    javaEE学习随笔
    类与接口
    java学习中的一些总结
    java 对象的创建
    jQuery选择器
    CSS学习随笔
    JDBC笔记 二
    Java EE笔记 (1) JDBC
    泛型笔记
  • 原文地址:https://www.cnblogs.com/it-k-50/p/6093469.html
Copyright © 2011-2022 走看看