美文网首页objectc入门及进阶阶段
Ios 属性类型 归纳与介绍

Ios 属性类型 归纳与介绍

作者: JaneEyre3X | 来源:发表于2017-05-15 13:53 被阅读32次

1.atomic与nonatomic

atomic:默认是有该属性的,这个属性是为了保证程序在多线程情况,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题

nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成一些互斥加锁代码,可以提高效率。

2.readwrite与readonly(readwritereadonly这两个属性的真正价值,不是提供成员变量访问接口,而是控制成员变量的访问权限)

readwrite:这个属性是默认的情况,会自动为你生成存取器。

readonly:只生成getter不会有setter方法。

3.strong与weak(strongretain功能相似;weakassign相似,只是当对象消失后weak会自动把指针变为nil;

strong:强引用,也是我们通常说的引用,其存亡直接决定了所指向对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示在列表中,则此对象会被从内存中释放。

weak:弱引用,不决定对象的存亡。即使一个对象被持有无数个弱引用,只要没有强引用指向它,那么还是会被清除。

4.assign、copy、retain

assign:默认类型,setter方法直接赋值,不进行任何retain操作,不改变引用计数。一般用来处理基本数据类型。

retain:释放旧的对象(release),将旧对象的值赋给新对象,再令新对象引用计数为1。我理解为指针的拷贝,拷贝一份原来的指针,释放原来指针指向的对象的内容,再令指针指向新的对象内容。

copy:与retain处理流程一样,先对旧值release,再copy出新的对象,retainCount为1.为了减少对上下文的依赖而引入的机 制。我理解为内容的拷贝,向内存申请一块空间,把原来的对象内容赋给它,令其引用计数为1。对copy属性要特别注意:被定义有copy属性的对象必须要 符合NSCopying协议,必须实现- (id)copyWithZone:(NSZone *)zone方法。

也可以直接使用:

使用assign: 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)

使用copy: 对NSString

使用retain: 对其他NSObject和其子类

相关文章

  • Ios 属性类型 归纳与介绍

    1.atomic与nonatomic atomic:默认是有该属性的,这个属性是为了保证程序在多线程情况,编译器会...

  • @property 属性类型归纳和介绍

    一. atomic 与 nonatomic 1.atomic : 原子性的, 默认拥有该属性, 这个属性是为了保证...

  • 2018-02-29-1组件+框架知识

    组件,就是iOS开发中的UI控件,属于WXML里面的内容 各种组件有公共属性与特殊属性属性的类型:基本是是变量类型...

  • From表单的属性与Input元素

    From表单的属性与Input中的类型与属性; 下面介绍下form表单的必填项 :action="路径" ...

  • iOS @property 默认属性

    iOS @property 默认属性数据类型atomic assign readwrite对象类型atomic ...

  • 由对象的属性说到几个容易混淆的js内建方法

    前言 关于属性 属性类型: 对象有两种属性类型:String类型属性 与 Symbol类型属性。它们通常被称为属性...

  • 2020-05-22

    类型属性与非类型属性的区别 结构体SomeStructure增加一个常量存储属性 类型属性调用 非类型属性调用 实...

  • Add CGFloat property to Category

    给扩展类添加CGFloat类型的属性 IOS中可以使用运行时动态给类添加属性,对象类型的属性添加方法大家都知道 但...

  • JS对象

    本节主要介绍对象的属性类型以及创建对象的几种方法。 对象的属性类型: ES中只有两种属性:数据属性和访问器属性。 ...

  • iOS tableView估算高度的作用

    1、属性介绍 在 iOS7.0之后出现了estimatedRowHeight这个属性,default is UIT...

网友评论

    本文标题:Ios 属性类型 归纳与介绍

    本文链接:https://www.haomeiwen.com/subject/eflhxxtx.html