属性:快速生成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 *)];

版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. Cats(2)- Free语法组合,Coproduct-ADT composition
  2. 浅析JVM内存结构和6大区域(转)举例非常好
  3. sublime text 之添加插件 并使用
  4. Java %c0%ae 安全模式绕过漏洞
  5. spring-websocket的搭建
  6. 退役?OR 继续
  7. 受限玻尔兹曼机(RBM)学习笔记(七)RBM 训练算法
  8. #ifdef 的技巧用法
  9. OCP读书笔记(16) - 管理资源
  10. tomcat支持php
  11. c语言变量及输入输出
  12. C#-----集合List<T>的常用方法
  13. enable-ssh-key-logon-disable-password-password-less-logon-centos/
  14. Java面试题详解四:==和equals的去别
  15. yii2 修改验证码小部件样式
  16. js Promise fetch demo
  17. Python中setup.py一些不为人知的技巧
  18. 《Linux内核》课本读书笔记 第一章、第二章
  19. Java实现的一个简单的模板渲染
  20. linux 下rocketmq安装

热门文章

  1. go 字符串拼接
  2. Selenium UI 举例 getCssValue
  3. Android手机摄像头编程入门
  4. Angular2,Springboot,Zuul,Shiro跨域CORS请求踩坑实录
  5. Linux常用命令 查找文件
  6. elementUI和iview兼容么
  7. WinForm一次只打开一个程序
  8. m_Orchestrate learning system---三十四、使用重定义了$的插件的时候最容易出现的问题是什么
  9. Java基础十--接口
  10. ubuntu server 无线网卡的处理