码迷,mamicode.com
首页 > 其他好文 > 详细

关于get、set方法以及点语法的使用

时间:2016-04-08 21:44:50      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

首先写一个简单的get,set方法来熟悉它的作用

//Fraction.h
@interface Fraction:NSObject
-(void)setNumber:(int) n;
-(int)getNumber;
//Fraction.m
#import Fraction.h
@implementation Fraction
{
    int number;
}
-(void)setNumber:(int)n;{
    number = n;
}
-(int)getNumber{
  return number;  
}

以上的实例不难看出,set、get实际上是两个函数:set方法无返回值,有一个参数,get方法有返回值,无参数,它的返回值就是set方法中接收的那个参数。因此把set方法和get方法统称为存取方法。下面就出现了合成存取方法:@property。

首先@property定义的属性的命名应该与实例变量相同,虽然这不是必须要这样做。@property定义在h文件中,可以将上面的get、set函数简化为如下:

//Fraction.h
@interface Fraction:NSObject
@property int number;
@end

在实现文件中,实际上是有synthesize函数的:

//Fraction.m
#import Fraction.h
@implemention Fraction
@synthesize number;

synthesize告诉OC编译器,为number这个属性生成一对设值方法和取值方法。接下来问题就来了:我使用set方法和get方法时候设值取值直接在main函数中使用[]调用方法就可以了,那么property是怎么设值取值的呢?

按照之前的方法,要获得myFraction(对象名)中存储的number的值,应该使用以下语句

//main.m
Fraction *myFraction = [[Fraction alloc]init];
[myFraction number];

这个操作实际上就是向myFraction对象发送number消息,从而返回所需的值,有了属性之后,就可以通过使用点运算符编写以下等价的表达式

//main.m
Fraction myFraction = [[Fraction alloc]init];
myFraction.number = 3;

也就是说,点语法实际上是一种特殊的调用函数的方法而已。需要指出的是,也可以对自定义的方法调用点语法:例如如果有一个取值方法定义为numerator,那么可以在程序中使用myFraction.numerator进行赋值,尽管numerator没有被定义为属性。但是点运算符通常是用在属性上,用于设置或者取得实例变量的值。其它方法的调用通常还是使用[]语法进行调用。

最后需要补充的是,实现文件中的@synthesize是可以省略的,如果省略的话,编译器会地洞分别命名底层的实例变量为_number。

---恢复内容结束---

关于get、set方法以及点语法的使用

标签:

原文地址:http://www.cnblogs.com/superorangecc/p/5369948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!