OC之属性

原创 2015年11月19日 10:03:23


属性的出现简化了程序的代码量,并且增加了实例变量的访问安全性
属性的属性:给属性提供一些关键字,用来控制settergetter方法的实现细节
这些关键字我们称为属性
属性的attribute一共分为三大类:
第一大类:读写性的控制readonly,readwrite,setter,getter
readonly:只读属性,告诉编译器,只声明getter方法,而没有setter方法(只能读取值,不能赋值)
readwrite:读写属性,告诉编译器既声明setter方法,又声明getter方法,readwrite是属性读写性控制的默认修饰词
第二大类:原子性的控制(atomicnonatomic
atomicsettergetter方法在多线程访问下是绝对安全的,即系统在settergetter方法内部做了很多多线程安全的处理操作。
atomic是原子性控制的默认设置
nonatomicsettergetter内部不会做过多得多线程方面的处理,仅仅是普通的setter,getter方法。
在开发过程中msettergetter方法处处都使用,如果使用atomic修饰,settergetter方法内部会做很多多线程安全的操作,会很占用系统资源,降低系统性能所以在开发中原子性一般设置为nonatomic,只有在需要线程安全的地方才使用atomic
第三大类:语义设置(assignretaincopy
assignsetter内部是直接赋值
retainsettergetter内部实现会做内存优化
如果属性是非对象性(比如intfloat、或者构造类型:结构体),属性的语义设置使用关键字assign
如果属性是对象类型(NSStringNSArrayNSDic)属性的设置用retain
如果属性是对象类型并且想得到参数的copy,使用关键字copy
*的语义设置用retain,不带*的语义设置用assign
assign,用于基本数据类型
-(void)setA:(int)a{
_a=a;
}
retain,通常用于非字符串对象
-(void)setA:(Car *)a{
if(_a!=a){
[_a release];
_a=[a retain];
}
}
copy,通常用于字符串对象、block、NSArray、NSDictionary
-(void)setA:(NSString *)a{
if(_a!=a){
[_a release];
_a=[a copy];
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Property属性, KVC键值编码OC…

1、属性:帮你自动生成setter 和 getter 方法      属性的声明:(写在.h中)      格式: @property 数据类型 属性名      属性的实现:(写在.m中)     ...

iOS中OC给Category添加属性

利用Runtime的关联对象技术给Categroy添加属性

OC总结----类的方法.继承.NSString类的常用方法.NSMutableString 类的方法.数组类.字典类.block语法以及数组排序高级.属性.category (分类,类目).延展,等

1.在加号方法中不能使用实例变量,shi'il
  • RC_cong
  • RC_cong
  • 2014年08月17日 21:19
  • 735

iOS开发之OC篇(11)—— Class(类)、@property属性

如何创建自己的类。 点语法 @property属性 属性修饰符

oc基础知识:属性、协议和分类

2013年11月27日日志: 1.属性: @property(assign ,copy或retain内存管理的信息)类型  实例变量名 @synthesize  实例变量名 ...

爬爬爬之路:OC语言(八) 属性 KVC简单介绍

属性属性的定义Objective-C 2.0定义的语法, 为实例变量提供了setter getter方法的默认实现 能在一定程度上简化程序代码 声明属性关键字@property 如果实例变量为_...
  • ljcdsg
  • ljcdsg
  • 2015年11月04日 22:58
  • 455

iOS OC内存管理、ARC、property属性、__strong、__weak、__block——iOS 编码复习(一)

首先来聊聊内存管理。因为是先有了内存管理这个东西,才慢慢的有了ARC,而后才会有@property的各种属性 聊到内存管理,我们就能知道iOS5之前,iOS的内存管理是MRC(手动内存管理)的。iOS...

OC中属性self.a与_a访问的区别

self.a与_a访问的区别

OC--属性修饰符

关于OC中属性修饰符,基本上是开发者面试都会被问到或者笔试遇到的题目了。由此可见它的重要性。对于开发语言来说,越是基础的东西越是应该要搞得清楚明白。...

OC 中 覆盖属性会有提示Auto property synthesis will not synthesize property 'delegate'

在编写一个自定义相册的功能的时候,由于需要继承 UINavigationController写一个ImagePickerViewController,同时ImagePickerViewControll...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC之属性
举报原因:
原因补充:

(最多只允许输入30个字)