1
2
3
4
5
6
7
8
9
10
11
12
|
#import <Foundation/Foundation.h>
@interface
Fraction:
NSObject
{
int
numerator;
//声明变量
int
denominator;
//声明变量
}
@property
int
numerator, denominator;
//声明参数的属性(合成器)
-(
void
) print;
//声明打印参数方法
-(
void
) setTo:(
int
) n over: (
int
) d;
//声明多个参数的方法
-(
double
) convertToNum;
//声明除法运算方法
@end
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@implementation
Fraction
@synthesize
numerator, denominator;
//定义参数属性(合成器)
-(
void
) print
//定义打印参数方法
{
NSLog
(@
"%i/%i"
, numerator, denominator);
}
-(
void
) setTo: (
int
) n over: (
int
) d
//定义多个参数的方法
{
numerator = n;
denominator = d;
}
-(
double
) convertToNum
//定义除法运算方法
{
if
(denominator != 0)
return
(
double
) numerator/denominator;
else
return
1.0;
}
@end
|
下面分别讲解Objective-C中的属性和带多个参数的方法。
-
属性(存取器方法)
首先我们先说属性,在接口部分(@interface部分)中使用@property指令标识属性。这些属性通常是实例变量。在Fraction类中,两个实例变量numerator和denominator都属于此类属性。接下来我们需要在实现部分(@implementation部分)使用指令@synthesize定义即可。对于属性的访问,可以通过类的实例使用点运算符进行访问。
-
多参数方法
参照上面例子Fraction类的setTo:over方法。首先,在接口文件中添加setTo:over:声明(详见上面例子对setTo:over方法的声明)。然后在实现部分(@implementation部分)添加新方法的定义。新的setTo:over:方法仅接收两个整型参数,n和d,并把它们赋值给该分数对应的域numerator和denominator。
创建方法名时,参数名实际上是可选的。例如,可以如下声明一个方法:
1
|
-(
int
) set: (
int
) n: (
int
) d;
|
注意,和先前的例子不同,这个方法的第二个参数没有名字。这个方法名为set::,两个冒号表示这个方法有两个参数,虽然没有全部命名。
要调用set::方法,可以使用冒号作为参数分隔符,如下所示(假设实例名称为:aFraction):
1
|
[aFraction set: 1: 3];
|
在编写新方法时,省略参数名不是一种好的编程风格,因为它使程序很难读懂并且很不直观,特别是当使用的方法参数特别重要时更是如此。