美文网首页
2、property 属性

2、property 属性

作者: For_Minho | 来源:发表于2017-02-25 16:38 被阅读0次

@property 是声明属性的语法,我们可以通过property 快速方便的为实例创建读取器,同时允许我们通过点语法来使用读取器。

property 在创建实例的时候,会隐形的创建get 和 set 方法

在类文件外部,也可以调用property 属性所声明的实例,但是其他的方式声明的对象是不能被外部所读取的。

property 属性主要有:atomic、nonatomic、strong、copy、assign、weak、readwrite、readonly、getter、setter 等修饰符

(1)原子性:atomic 和 nonatomic

atomic 意思是原子性,意味着只有一个线程可以同时访问实例。atomic 是线程安全的,至少在当前的读取器是安全的。虽然它是一个默认属性,但是由于其使用同步锁开销较大,带来性能问题

nonatomic则表示是非原子性的。它可以被多个线程访问。效率要比atomic 高,但是不能保证其在多线程状态下的安全性,在单线程和明确只有一个线程访问的情况下被广泛使用。

(2)存取控制器

readwrite(默认值):表示其同时拥有getter 和 setter 方法;

readonly:只读操作,其只有getter 方法,没有setter 方法;

注:如果某个实例只允许被外部读取,而不能写入操作,同时在类实现文件当中可以写入的话,可以在头文件中声明属性为只读的,在实现文件中设置其为可读写的属性。

例:头文件中声明为:@property(nonatomic,readonly,copy) NSString *stringA;

实现文件中声明为:@property(nonatomic,readwrite,copy) NSString *stringA;

(3)内存管理

assign:用于值类型,如int,float 等

weak:用于NSObject 类的实例修饰,引用计数不变

strong 和 retain :修饰 NSObject 类的实例,同时引用计数会+1

copy:与strong相似,但是其分为浅层复制和深复制两种,其是对传入对象的副本拥有所有权,而不是传入对象本身。

注:copy 注意区别浅复制和深复制两种方式,NSString、NSArray、NSDictionary等不可变类型都为浅层复制,即其引用计数会+1,而不会创建新的内存。

相关文章

  • CSS选择器

    语法: 属性声明 = 属性名:属性值 selector{property1:value;property2:val...

  • 2、property 属性

    @property 是声明属性的语法,我们可以通过property 快速方便的为实例创建读取器,同时允许我们通过点...

  • 高级语言python-2 11.20

    (一):属性property 1.私有属性添加getter和setter 2,用property升级get set...

  • Python属性和内建属性

    属性property 1. 私有属性添加getter和setter方法 2. 使用property升级getter...

  • Swift - 属性(Property)

    属性(Property) Swift 中跟实例相关的属性可以分为 2 大类 存储属性(Stored Propert...

  • property属性

    property属性 什么是property属性? 一种用起来像是使用的实例属性一样的特殊属性 .property...

  • Swift属性底层探究

    Swift的属性分为存储属性(Stored Property)和计算属性(Computed Property),存...

  • Swift5.1学习随笔之属性

    swift中跟实例相关的属性可以分为2大类 1、存储属性(Stored Property)2、计算属性(Compu...

  • angular 模板里面绑定属性

    1. 绑定静态属性 static property example 2. 绑定动态属性 动态属性绑定要用 [] /...

  • Android动画

    Property Animation(属性动画) 1.ValueAnimator 2.ObjectAnimator...

网友评论

      本文标题:2、property 属性

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