属性:快速生成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 分类: ios学习 OC 2015-06-24 17:24 61人阅读 评论(0) 收藏的更多相关文章

  1. shell脚本调试 分类: 学习笔记 linux ubuntu 2015-07-14 12:49 53人阅读 评论(0) 收藏

    1.sh -x script 这将执行脚本并显示所有变量的值 如,脚本: #!/bin/bash #a test about shift if [ $# -le 0 ] then echo " ...

  2. ubuntu中安装jdk 分类: java 学习笔记 linux ubuntu 2015-07-06 17:49 74人阅读 评论(0) 收藏

    参考文献:ubuntu 13.04 安装 JDK 先去oracle官网下载jdk,这一段我就不赘述了. 下载好之后先解压,解压方式参见 linux常用的压缩与解压缩命令 ,解压之后,将文件剪贴至/us ...

  3. linux中的网络通信指令 分类: 学习笔记 linux ubuntu 2015-07-06 16:02 134人阅读 评论(0) 收藏

    1.write write命令通信是一对一的通信,即两个人之间的通信,如上图. 效果图 用法:write <用户名> 2.wall wall指令可将信息发送给每位同意接收公众信息的终端机用 ...

  4. linux常用的压缩与解压缩命令 分类: 学习笔记 linux ubuntu 2015-07-05 19:38 38人阅读 评论(0) 收藏

    1.gzip 压缩 gzip 是压缩文件,压缩之后文件后缀为.gz 用法:gzip 选项 [文件] 2.gunzip 解压 这个命令与gzip的功能刚好相反,这个是解压. 用法 gunzip 选项 [ ...

  5. ubuntu14.04使用root用户登录桌面 分类: 学习笔记 linux ubuntu 2015-07-05 10:30 199人阅读 评论(0) 收藏

    ubuntu安装好之后,默认是不能用root用户登录桌面的,只能使用普通用户或者访客登录.怎样开启root用户登录桌面呢? 先用普通用户登录,然后切换到root用户,然后执行如下命令: vi /usr ...

  6. linux中echo的用法 分类: 学习笔记 linux ubuntu 2015-07-14 14:27 21人阅读 评论(0) 收藏

    1.echo命令我们常用的选项有两个,一个是-n,表示输出之后不换行,另外一个是-e,表示对于转义字符按相应的方式处理,如果不加-e那么对于转义字符会按普通字符处理. 2.echo输出时的转义字符 \ ...

  7. shell入门之函数应用 分类: 学习笔记 linux ubuntu 2015-07-10 21:48 77人阅读 评论(0) 收藏

    最近在学习shell编程,文中若有错误的地方还望各位批评指正. 先来看一个简单的求和函数 #!/bin/bash #a test about function f_sum 7 8 function f ...

  8. shell入门之流程控制语句 分类: 学习笔记 linux ubuntu 2015-07-10 16:38 89人阅读 评论(0) 收藏

    1.case 脚本: #!/bin/bash #a test about case case $1 in "lenve") echo "input lenve" ...

  9. shell入门之变量测试 分类: 学习笔记 linux ubuntu 2015-07-10 15:49 31人阅读 评论(0) 收藏

    格式:test 测试条件 字符串测试: 注意空格: test str1 == str2 测试字符串是否相等 test str1 != str2 测试字符串是否不相等 test str1 测试字符串是否 ...

  10. shell脚本实现冒泡排序 分类: 学习笔记 linux ubuntu 2015-07-10 14:16 79人阅读 评论(0) 收藏

    手动输入一行字符串,并对其排序. 脚本如下: #!/bin/bash #a test about sort echo "please input a number list" re ...

随机推荐

  1. python unicode

    >>> a="jkjjhhjjj" >>> a_uni = a.decode('utf-8') >>> type(a_uni) ...

  2. [原][OSG]整理osg渲染一帧的流程

    参考:最长的一帧 先看下frame void ViewerBase::frame(double simulationTime) { advance(simulationTime);//记录仿真时间,帧 ...

  3. 团队作业Beta冲刺-第三天

    2018.06.26 各个成员完成任务 成员 今日完成任务 贡献小时数 龙正圆 后台程序完善 5h 杨环宇 后台程序完善 4h 马军.龚继恒 界面美化 2h 候燕.纪亚星 Beta冲刺博客的撰写 3h ...

  4. Android手机摄像头编程入门

    本讲内容:Android手机摄像头编程入门智能手机中的摄像头和普通手机中的摄像头最大的区别在于,智能机上的摄像头可以由程序员写程序控制, 做一些有趣的应用譬如,画中画,做一些有用的应用譬如二维码识别, ...

  5. cocos2dx 在windows下开启console

    cocos2dx 3.10 1.在main函数中写入代码 AllocConsole(); freopen("CONIN$", "r", stdin); freo ...

  6. 同步代码时忽略maven项目 target目录

    方式一: 在项目代码路径,如: F:\xyx\sl  鼠标右键,“TortoiseSVN”-- >“Settings” -->"Subversion"-->&qu ...

  7. ACM-ICPC Beijing Online A The Book List

    比赛的时候一眼就看出是字典树+DFS了,然而这题题意比较难理解,还有不少WA点.所以很快敲完之后和队友反复斟酌题意,修改代码.结果还是交了3发WA.最后猜测目录和书在同一个母目录域下同名是不同的,增加 ...

  8. python-day9-循环嵌套

    练习:99乘法表: # for line in range(1,10): #line=2# for row in range(1,line+1):# print('%s*%s=%s' %(line,r ...

  9. HDU-4471 Yet Another Multiple Problem (BFS+路径还原)

    Problem Description There are tons of problems about integer multiples. Despite the fact that the to ...

  10. juqery的一些简单用法

    层级选择器(重点).基本过滤选择器 :eq(index) 选择匹配到的元素中索引号为index的一个元素,index从0开始 :odd 选择匹配到的元素中索引号为奇数的所有元素,index从0开始 : ...