OC基础:属性.点语法.KVC
来源:互联网 发布:mysql 最多从库 编辑:程序博客网 时间:2024/05/22 23:58
属性:快速生成setter和getter
属性也包括:声明和实现
1.属性的声明写在.h中
格式:@property 数据类型 变量名;
如果实例变量一致的时候,属性的声明可以合并,每一个属性之间使用,分隔
2属性的实现写在.m中
格式:@synthesize 数据类型 变量名;
Xcode5.0之后,属性的实现部分也不需要写了
当你同时重写setter和getter时,系统就不会再自动生成@synthesize name=_name;
属性的优化
1.声明的时候同一种数据类型可以合并
2.实例变量可以省略(系统自动添加)
3.属性的实现可以省略
--------------------------------------------------------------------------------------------------------
属性的属性(默认是readwrite)
写在.h文件@property后的()中 如:@property(属性)
读写组:
用来控制setter和getter的实现
readwrite 可读可写 自动生成setter和getter
readonly 只读 自动生成getter
重名组:
用来为setter和getter重命名
setter为set方法重命名 setter=方法名
getter为get方法重命名 getter=方法名
//重写set方法的方法名时,要加:
//如果一个属性是BOOL类型,要对getter方法重命名
原子性(默认atomic):
atomic:原子性,同一时刻时,只能使用setter或者getter(只能用其一),单线程比较安全,但效率比较低
nonatamic:非原子性,多线程不安全,但效率高
//当你重写setter和getter时,需要把原子修饰符改为nonatomic
内存管理组(默认是assign)
assign默认,操作非对象类型(基本数据类型)
retain 操作对象类型
copy 操作对象类型,对象要遵循NSCopying
//NSString 属性一般使用copy
点语法 .
如:
girl.name=@"黄图哥'; //等于[girl setName=@"黄图哥"];
girl.name; //相当于[girl name];
当.语法后面跟着=,相当于setter
当.语法后面什么都没有跟,相当与getter
注意:只有当实例变量拥有setter和getter时,才能使用.语法
--------------------------------------------------------------------------------
KVC
key-value-coding 键值编码,使用间接访问实例变量的方法
使用KVC访问 name
通过KVC中key去类中找实例变量,先判断有没有实例变量name,如果没有再去找_name,有就访问即可.
即使实例变量没有setter和getter,也能通过KVC为实例变量赋值和取值.
为了避免通过KVC编码的赋值和取值因为没有key值(不存在实例变量),出现程序奔溃(crash),需要在所在类的.m文件中,重写setValue和valueForUndefinedKey
使用:
[对象名 setValue:(id) forKey:(NSString *)]
[对象名 valueForKey:(NSString *)];
- OC基础:属性.点语法.KVC
- OC第八天 属性 点语法 KVC
- OC初期-08 属性,点语法,KVC
- OC 属性的属性 点语法的使用 KVC
- 随意细解:OC -- 属性、点语法、KVC
- 进击的KFC:OC(八)属性、点语法、KVC
- 08 属性 点语法 KVC
- OCday4 属性, 点语法, KVC
- OC04_属性,kvc,点语法
- day8: 属性、点语法、KVC
- OC第八天 — 属性, 属性的属性, 点语法, KVC
- OC学习第八天_属性 属性的Attribute 点语法 KVC
- OC属性、点语法
- oc 点语法 / KVC /readwrite/readonly/
- OC基础之-Property(属性)和点语法
- OC基础第八讲:属性 和点语法
- OC-----属性及点语法
- OC语法 --- KVC
- 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
- Cordova+ ios 插件开发
- 关于JSP上传文件和表单值同时上传到数据库的问题。
- java代理
- 学习RecyclerView和CardView
- OC基础:属性.点语法.KVC
- poll和select的使用和差异
- OpenWRT 开发小记
- SDL中的互斥量和条件变量
- Error using fmincon (line 816), Hessian option set to 'on' but no Hessian function provided in optio
- 指针自加问题
- Xcode Cocoa程序MessageBox 弹框
- 一些学习前端的网站(html&css&javascript等)持续更新。。。
- cocos2dx-3.3 使用编辑框(EditBox)