OC基础:属性.点语法.KVC 分类: ios学习 OC 2015-06-24 17:24 61人阅读 评论(0) 收藏
属性:快速生成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) 收藏的更多相关文章
- 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 " ...
- ubuntu中安装jdk 分类: java 学习笔记 linux ubuntu 2015-07-06 17:49 74人阅读 评论(0) 收藏
参考文献:ubuntu 13.04 安装 JDK 先去oracle官网下载jdk,这一段我就不赘述了. 下载好之后先解压,解压方式参见 linux常用的压缩与解压缩命令 ,解压之后,将文件剪贴至/us ...
- linux中的网络通信指令 分类: 学习笔记 linux ubuntu 2015-07-06 16:02 134人阅读 评论(0) 收藏
1.write write命令通信是一对一的通信,即两个人之间的通信,如上图. 效果图 用法:write <用户名> 2.wall wall指令可将信息发送给每位同意接收公众信息的终端机用 ...
- linux常用的压缩与解压缩命令 分类: 学习笔记 linux ubuntu 2015-07-05 19:38 38人阅读 评论(0) 收藏
1.gzip 压缩 gzip 是压缩文件,压缩之后文件后缀为.gz 用法:gzip 选项 [文件] 2.gunzip 解压 这个命令与gzip的功能刚好相反,这个是解压. 用法 gunzip 选项 [ ...
- ubuntu14.04使用root用户登录桌面 分类: 学习笔记 linux ubuntu 2015-07-05 10:30 199人阅读 评论(0) 收藏
ubuntu安装好之后,默认是不能用root用户登录桌面的,只能使用普通用户或者访客登录.怎样开启root用户登录桌面呢? 先用普通用户登录,然后切换到root用户,然后执行如下命令: vi /usr ...
- linux中echo的用法 分类: 学习笔记 linux ubuntu 2015-07-14 14:27 21人阅读 评论(0) 收藏
1.echo命令我们常用的选项有两个,一个是-n,表示输出之后不换行,另外一个是-e,表示对于转义字符按相应的方式处理,如果不加-e那么对于转义字符会按普通字符处理. 2.echo输出时的转义字符 \ ...
- shell入门之函数应用 分类: 学习笔记 linux ubuntu 2015-07-10 21:48 77人阅读 评论(0) 收藏
最近在学习shell编程,文中若有错误的地方还望各位批评指正. 先来看一个简单的求和函数 #!/bin/bash #a test about function f_sum 7 8 function f ...
- 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" ...
- shell入门之变量测试 分类: 学习笔记 linux ubuntu 2015-07-10 15:49 31人阅读 评论(0) 收藏
格式:test 测试条件 字符串测试: 注意空格: test str1 == str2 测试字符串是否相等 test str1 != str2 测试字符串是否不相等 test str1 测试字符串是否 ...
- shell脚本实现冒泡排序 分类: 学习笔记 linux ubuntu 2015-07-10 14:16 79人阅读 评论(0) 收藏
手动输入一行字符串,并对其排序. 脚本如下: #!/bin/bash #a test about sort echo "please input a number list" re ...
随机推荐
- DDSM数据处理之PngWithOverlay 框出病灶区域
修改代码路径 若overlay是某一侧的标注. 文件夹里某一侧的png 应该有对应 某一侧的overlay 这样一一对应才可以使得代码运行. 否则需要手动删除没有overlay的png图片. 左侧没有 ...
- [BZOJ]|[Ural] Formula 1-----插头DP入门
1519. Formula 1 Time limit: 1.0 secondMemory limit: 64 MB Background Regardless of the fact, that Vo ...
- go 变量声明
第一种,指定变量类型,声明后若不赋值,使用默认值. var v_name v_type v_name = value 第二种,根据值自行判定变量类型. var v_name = value 第三种,省 ...
- c++ 容器填充指定长度(fill_n)
#include <iostream> // cout #include <algorithm> // fill_n #include <vector> // ve ...
- ubuntu 14.04 安装 glog
1.下载 git clone https://github.com/google/glog 2.配置 sudo apt-get install autoconf automake libtool 3. ...
- ZC_C++类函数指针_模拟_Delphi类函数指针
ZC: C++的类函数指针 不像 Delphi的类函数指针,前者 需要规定死 是哪个类的函数的指针,后者就不需要 很灵活. 测试环境: Win7x64 cn_visual_studio_2010_ul ...
- angular编译机制
转载https://segmentfault.com/a/1190000011562077 Angular编译机制 前言 http://www.cnblogs.com/ztwBlog/p/620975 ...
- PHP算法之排序算法(PHP内置排序函数)
首先用实例来讲述一下PHP内置的一些排序函数 [a / k] sort [/ rsort]:[保留索引关系 / 按键名(保留键名关系,适用于关联数组)] 对数组进行排序,结束时数组单元将被从最低到最高 ...
- HTML中常见的其它标签
HTML中常见的其它标签 一.头标签部分 1.<title>:指定浏览器的标题栏显示的内容. 2.<base>: href 属性:指定网页中所有的超链接的目录.可以是本地目录, ...
- java生产条形码
一.通过JBarcode(此种方式可以隐藏掉条形码下面的字符串) 1.下载jar包 jbarcode-0.2.8.jar 目前maven中央仓库并没有jbarcode的坐标 如果是mav ...