美文网首页
iOS------如何理解"属性"这一概念

iOS------如何理解"属性"这一概念

作者: 彬至睢阳 | 来源:发表于2017-12-05 17:23 被阅读0次

属性是Objective-C的一项特性,用于封装对象中的数据。Objective-C对象通常会把其所需要的数据保存为各种实例变量;而实例变量一般通过存取方法来访问。获取方法getter用于读取变量值,而设置方法setter用于写入变量值。

属性拥有的特质分为四类:

1.原子性,如果属性具备nonatomic特质,则不适用同步锁

2.读写权限

3.内存管理语义

assign--------只会执行针对"纯量类型"(例如CGFloat或NSInteger等)的简单赋值操作。

strong-----此特质表明该属性定义了一种"拥有关系",即为这种属性设置新值时,设置方法会先保留新值,并释放旧值,然后再将新值设置上去。

weak-----此特质表明该属性定义了一种"非拥有关系",为这种属性设置新值时,设置方法既不保留新值,也不释放旧值,此特质同assign类似,然而在属性所指的对象受到摧毁时,属性值也会清空。

unsafe_unretained ----适用于"对象类型",表达一种"非拥有关系"(不保留,unretained),当目标对象早到摧毁是,属性值不会自动清空这一点与weak有区别。

copy----此特质所表达的所属关系与strong类似。然而设置方法不保留新值,而是将其“拷贝”(copy).

4.方法名:可通过如下特质来指定存取方法的方法名。如

getter=<name>指定获取方法的方法名。如果某属性时Boolean型,则在其获取方法前加上is前缀,就可以用这个方法指定。

如@property (nonatomic, getter=isOn) BOOL on;

但是setter=<name>指定设置方法的方法名不常见。

在Objective-C中,属性(property)和成员变量是不同的。那么,属性的本质是什么?它和成员变量之间有什么区别?简单来说属性是添加了存取方法的成员变量,也就是:

@property = ivar + getter + setter;

相关文章

  • iOS------如何理解"属性"这一概念

    属性是Objective-C的一项特性,用于封装对象中的数据。Objective-C对象通常会把其所需要的数据保存...

  • iOS 编写高质量代码(二)

    这篇将从面向对象的角度分析如何提高OC的代码质量。 一、理解“ 属性 ”这一概念 属性(@property)是OC...

  • 编写高质量ios代码2

    1.理解属性这一概念 首先我们应当理解属性这一概念,看如下代码: 在OC的类中我们当然可以这样声明属性,但是这样的...

  • 《编写高质量iOS与OS X代码的52个有效方法》6-9

    第6条:理解“属性”这一概念 需要理解的概念:对象、消息传递、Object-C运行期环境属性的相关概念:存取方法/...

  • 理解“属性”这一概念

    @property:编译器自动编写访问这些属性的存取方法;(这个过程有编译器在编译期执行,所以编辑器里看不到这些“...

  • 《Effective Objective-C 2.0 》 阅读笔

    第6条:理解“属性”这一概念 1. 属性的概念 “属性”(property)是Objective-C的一项特性,用...

  • [15]Effective Objective-C 2.0【6-

    第二章:对象、消息、运行期 第六条:理解“属性”这一概念 这一条讲的是属性的基本概念,以及属性的各种修饰符,这里强...

  • 理解属性概念

    在很久很久以前iOS是木有@property滴,我们必须自己定义实例变量和存取方法 属性@property给我们带...

  • 理解"属性"这一概念

    "属性"是OC的一项特性,用于封装对象的数据.OC对象通常会把其所需要的数据保存为各种实例变量.你也许知道"属性"...

  • 《Effective Objective-C 2.0》读书笔记(

    6、理解“属性”这一概念 “属性”(property)是Objective-C的一项特性,用于封装对象中的数据。O...

网友评论

      本文标题:iOS------如何理解"属性"这一概念

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