iOS之Cocoa大招KVC键值编码
2015-10-15 22:34
441 查看
在iOS编程中,KVC(Key Value Coding)键值编码被称为Cocoa框架的大招,这是有一定道理的,KVC是底层的操作,它可以做到很多难以实现的操作,同时也可以使得代码变得很简单。本文通过对KVC的各种不同功能来进行说明:
新建一个Command Line Tool项目1、KVC可以改变那些私有的属性:
新建一个继承于NSObject的类Person,在.m文件中添加一个属性name,作为Person类的一个私有属性
#import "Person.h" @interface Person() @property (nonatomic, copy) NSString *name; @end @implementation Person @end返回到main.m文件中,直接进行修改这个属性的话:
Person *person = [[Person alloc]init]; person.name = @"nineteen";会出现错误提示:
Property 'name' not found on object of type 'Person'表示这个私有属性是找不到的,但是我们可以通过KVC来进行操作:
Person *person = [[Person alloc]init]; // person.name = @"nineteen"; [person setValue:@"nineteen" forKeyPath:@"name"]; NSLog(@"%@",[person valueForKeyPath:@"name"]);这样打印出来的结果为:
2015-10-15 22:57:03.915 KVCTest[6934:500230] nineteen说明可以通过KVC来改变那些私有属性
2、KVC可以改变被只读修饰的属性
在Person类的.h文件中定义一个readonly属性:
#import <Foundation/Foundation.h> @interface Person : NSObject @property (copy, nonatomic, readonly) NSString *gender; @end然后返回到main.m文件中,想尝试去利用setter方法去修改gender属性:
person.gender = @"男";发现会出现这样一个错误提示:
Assingnment to readonly property表示readonly属性是不能够通过setter方法来进行改变值的,那么这时候就通过KVC进行赋值修改
[person setValue:@"男" forKeyPath:@"gender"]; NSLog(@"%@",person.gender);打印出来的结果为:
2015-10-15 23:36:17.173 KVCTest[6967:537532] 男
相关文章推荐
- ios学习资料
- #在蓝懿iOS学习的日子#2014年10月15日
- 记录我的ios学习生涯十一
- iOS--拍照、从相册选图并对图片进行裁剪
- iOS开发 检测字符串是否是空字符串
- [转] iOS --- "自释放"在iOS开发中的应用
- iOS 代理,代理是实现反向传值步骤
- iOS ---上传头像 裁剪
- iOS---头像选取(照相或者图片库)、大小等比缩放、生成圆形头像
- iOS开发总结之代码规范(下)
- iOS开发总结之代码规范(上)
- iOS 警告收录及科学快速的消除方法
- iOS 播放视频
- iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类
- iOS 核心动画
- 我的IOS学习历程 - 第六天2
- 我的IOS学习历程 - 第六天1
- IOS 开发者账号 (team账号)
- 我的IOS学习历程-第五天
- IOS 通知传值