oc中的Set函数、Get函数、点语法和类方法等
2016-06-23 13:38
399 查看
[align=left]1. Set函数[/align] [align=left]setter函数,对成员变量赋值。Set函数的一般写法以对age操作为例,写法为:[/align] [align=left]-(void)setAge:(int)newage。[/align] [align=left]2. Get函数[/align] [align=left]getter函数,对成员变量取值。Get函数的一般写法也以对age的操作为例,写法为:[/align] [align=left]-(int)age;[/align] [align=left]3. 点运算符在OC的类对象中不能访问成员变量,如dog.age=5,这里不是使用成员变量age,而是调用成员方法setAge,相当于给dog.age赋值时,调用方法[dog setAge:5]。[/align] [align=left]NSLog(@”%d”,dog.age); 这里也不是使用成员变量age,而是调用成员方法age,使用dog.age表达式的值时,实际上就是调用成员方法age,[dog age]。[/align] [align=left]“. ”不能调用成员变量,只是调用set函数和get函数的一种简写。这里不能理解为,定义了get函数和set函数就能调用成员变量,因为将这两个函数,不以一般形式书写时,使用dog.age时,就会报错。[/align] [align=left]4. @property 和@synthesize[/align] [align=left]定义set函数和get函数时,我们会发现多个成员变量定义时,会做许多重复的工作,OC为了方便,将这种方法封装起来,我们可以使用@property来声明set和get函数,使用@synthesize来实现set函数和get函数。同样以Dog类的成员变量age为例。[/align] [align=left]-(void)setAge:(int)newage;[/align] [align=left]-(int)age;[/align] [align=left]这两个函数使用@property,可以写为 “@property int age;”,这样大大减少了重复性工作。[/align] [align=left]声明后实现函数,一般的实现方式为:[/align] -(void)setAge:(int)newage { age=newage; } -(int)age { return age; } 复制代码 [align=left] 同样使用@synthesize可以简化为“@synthesize age;”[/align] [align=left]5. set和get函数的名称与变量名不同,但同时使用点语法[/align] [align=left]1 )函数与变量名不同,使用@property和@synthesize[/align] [align=left] @property secondnum;[/align] [align=left] @synthesize secondnum=b;[/align] [align=left]实现的时候关联,声明的时候不用管。这时,可以使用“对象.sencondnum”对b进行赋值和取值。[/align] [align=left]2 )set函数和get函数名称不对应[/align] [align=left] 将“@property int d;”改为“@property (getter = d1st) int d;”[/align] [align=left]“@synthesize d”不变,赋值和调用时就不同了,赋值时为“对象.d=1”,取值时就为“对象.d1st”。这里只是添加了一个新名,不是代替原有的“对象.d=1”,但是[对象 setA]就不能使用了。[/align] [align=left]3 ) @property(setter=set2nd: ;getter=d1st) int d;[/align] [align=left]这里将getter和setter函数都增加了新名字,这里必须注意的是,set函数的名字格式必须为“setXXXX:”,一定不能忘记冒号,用逗号隔开get函数,这两个函数不分前后。[/align] [align=left]“@synthesize d;”不变。[/align] [align=left]4 ) @property(readonly) int d;[/align] [align=left] ()里的内容称为property的属性,若属性为readonly,则只声明get函数,不声明set函数,默认为readwrite。没有声明set函数@synthesize就不会实现set函数。[/align] [align=left]6. 函数前的“+”与“-”[/align] [align=left]OC中常见函数名称前面常带有“+”和“-”,这里的加减号分别代表了不同的方法类型。[/align] [align=left]+ 代表 函数为类的函数,调用时用类名调用。[/align] [align=left]- 代表 函数为对象的函数,调用时需用对象调用。[/align] [align=left]类没有空间,没有成员变量的空间,类的方法不能使用对象的成员变量。[/align] [align=left]用处: 1 在没有对象的时候,调用+函数创建一个对象。[/align] [align=left] 2 单例模式。可以看为全局变量的升级版。一个类的对象为其他类的所有对象所共有[/align] |
相关文章推荐
- UVa 11100
- yii asset 初步
- shell 套用expect
- jsse.jar
- alter database和alter system和alter session的区别
- mysql 主从复制(一)之实战篇(超简单)
- RxJava操作符之Creating Observables
- SPFA
- 个人总结
- android-AccessibilityService
- 关于myeclipse中maven项目转换相关设置
- 面向对象4
- 剑指offer题解 二叉树的深度
- Maven
- 从0x7c00开始的16位汇编(菜鸟文章)
- 安卓studio 新建项目时,出现包冲突错误时 ---- 解决办法
- Android水波纹特效的简单实现
- AVIOContext结构体
- 观察者模式
- floyd求最小环