您的位置:首页 > 移动开发 > Objective-C

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:

系统默认实现是抛出一个异常.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  objective-c