OC中关于属性的一些基本定义

属性介绍:

属性是OC-2.0之后出现的语法,为实例变量提供setter、getter方法的默认实现

属性的出现简化了程序代码量,并且增强了实例变量访问的安全性

属性的属性:

给属性提供了一些关键字,用来控制setter和getter方法的实现细节

这些关键字我们成为属性的属性

属性的attribute一共分为三大类:

第一大类:

读写性的控制(readonly,readwrite,setter,getter)

readonly:只读属性,告诉编译器之声明getter方法,而没有setter(只能读取值,不能被赋值)

readwrite:读写属性,告诉编译器,既声明setter又声明getter方法,readwrite是属性读写性控制的默认修饰词

第二大类:

原子性的控制(atomic,nonatomic)

atomic:

setter和getter方法在多线程访问是安全的,即系统在setter和getter方法中做了很多多线程安全的处理操作。

atomic是原子性控制的默认设置

nonatomic:

setter和getter内部不会做过多的多线程方面的处理,仅仅是普通的setter和getter方法

在开发过程中,setter和getter方法处处都在使用,如果使用atomic修饰,setter和getter方法内部会做很多多线程安全的操作,会很占用系统资源,降低系统性能。

所以在平常开发中原子性(线程安全)一般设置为nonatomic,只有在需要安全的地方atomic

第三大类

语义设置:assgin,retain,copy

assign:setter内部实现是直接赋值。

retain:setter内部实现会对内存进行优化


如果属性是非对象类型(比如int、float或者构造类型:结构体),属性的语义设置使用关键字assign.

如果属性是对象类型(NSString、NSArray、NSdic、Person...)属性的语义设置使用retain。

带*的属性语义设置用retain。

不带*的属性语义设置用assign。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值