Objective-C属性
2015-08-18 11:12
309 查看
一.属性(描述类的特征)
1.属性是Objective-C 2.0定义的语法,为实例变量提供了setter和getter方法的默认实现,能在一定程度上简化代码,增强实例变量的访问安全性.
2,属性的定义
2.1.属性的声明: 使用@property声明属性,相当在@interface中声明了两个方法(setter和getter),如:@property
(NSString *)name;
2.2.属性的实现: 使用@synthesize实现属性,相当于在@implementation中实现了setter和getter这两种方法,如:@synthesize
name = _name;
二.属性的属性
1.为属性提供了一些关键字用以控制setter、getter的实现细节,这些关键字我们称之为属性的属性(attri),共有三大类的attribute.
三大类attribute:
第一大类:读写控制
读写控制包括:
readonly: readonly告诉编器,之只声明getter方法,无setter方法
readwrite:告诉编译器,即声明setter方法也声明getter方法
第二大类:原子性控制:
atomic:setter、getter方法在多线程访问下是绝对安全的,即setter、getter内部做了多线程访问处理.原子性控制的默认设置是atomic;
nonatomic:setter、getter内部不会做多线程访问处理
程序开发过程中,setter、getter处处都在⽤用,如果使⽤用atomic,需要不断
的对setter、getter加锁解锁以保证线程访问安全,会很占⽤用系统资源,降低系统性能.
第三大类:语义设置(assign,retain,copy)
assign:setter、getter内部实现是直接赋值.
retain:setter、getter的内部会做内存优化.
copy:setter、getter的内部也会做内存优化
如果属性是非对象类型(比如int,float等)属性的语义设置使用assign,
如果属性是对象类型(比如NSString,NSArray等),属性设置为retain,
如果属性是对象类型并且想得到参数的copy,使用copy关键字
三.点语法
点语法提供了一种快捷的访问方式,凡符合系统默认setter、getter书写格式的方法都可以使用点语法,属性是一对getter、setter方法,点语法是属性的另一种调用格式.
四.KVC(key-value-coding,即键值编码)
KVC是一种间接访问实例变量的方法.
key:键没用于标识实例变量
value:实力变量对应的值
修改值:
setValue:forKey:
setValue:forKryPath:
setValue:forUndefinedKey:
setValuesForKeysWithDictionary:
获取值:
valueForkey
valueForKeyPath:
valueForUndefinedKey:
注意:当key值不存在的时候,会执行setValue:forUndefinedkey:
系统默认实现是抛出一个异常.
1.属性是Objective-C 2.0定义的语法,为实例变量提供了setter和getter方法的默认实现,能在一定程度上简化代码,增强实例变量的访问安全性.
2,属性的定义
2.1.属性的声明: 使用@property声明属性,相当在@interface中声明了两个方法(setter和getter),如:@property
(NSString *)name;
2.2.属性的实现: 使用@synthesize实现属性,相当于在@implementation中实现了setter和getter这两种方法,如:@synthesize
name = _name;
二.属性的属性
1.为属性提供了一些关键字用以控制setter、getter的实现细节,这些关键字我们称之为属性的属性(attri),共有三大类的attribute.
三大类attribute:
第一大类:读写控制
读写控制包括:
readonly: readonly告诉编器,之只声明getter方法,无setter方法
readwrite:告诉编译器,即声明setter方法也声明getter方法
第二大类:原子性控制:
atomic:setter、getter方法在多线程访问下是绝对安全的,即setter、getter内部做了多线程访问处理.原子性控制的默认设置是atomic;
nonatomic:setter、getter内部不会做多线程访问处理
程序开发过程中,setter、getter处处都在⽤用,如果使⽤用atomic,需要不断
的对setter、getter加锁解锁以保证线程访问安全,会很占⽤用系统资源,降低系统性能.
第三大类:语义设置(assign,retain,copy)
assign:setter、getter内部实现是直接赋值.
retain:setter、getter的内部会做内存优化.
copy:setter、getter的内部也会做内存优化
如果属性是非对象类型(比如int,float等)属性的语义设置使用assign,
如果属性是对象类型(比如NSString,NSArray等),属性设置为retain,
如果属性是对象类型并且想得到参数的copy,使用copy关键字
三.点语法
点语法提供了一种快捷的访问方式,凡符合系统默认setter、getter书写格式的方法都可以使用点语法,属性是一对getter、setter方法,点语法是属性的另一种调用格式.
四.KVC(key-value-coding,即键值编码)
KVC是一种间接访问实例变量的方法.
key:键没用于标识实例变量
value:实力变量对应的值
修改值:
setValue:forKey:
setValue:forKryPath:
setValue:forUndefinedKey:
setValuesForKeysWithDictionary:
获取值:
valueForkey
valueForKeyPath:
valueForUndefinedKey:
注意:当key值不存在的时候,会执行setValue:forUndefinedkey:
系统默认实现是抛出一个异常.
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中NSLog输出格式大全
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(二)
- objective-c(三)
- objective-c(四)-基本数据类型以及循环和选择结构
- objective-c(六)文件分离,合成存取方法,方法多参数,局部变量,self使用(未完成)
- windows下objective-c的cocoa框架编程,可以有图形界面哟