-
首先看一个简单的OC类申明
@interface Person : NSObject
{
int age; //字段在此定义
}- (void)setAge:(int)newAge; //函数在此定义
@end
根据上面类的申明,我们可以把字段定义为@public @protected @private来对字段的作用域加以修饰,这和C++比较类似,其中缺省为@protected
@OC函数全部都是public类型
上面-表示函数属于对象函数,如果为+则表示类函数(这与Java、C++中类中static函数一样)
- 函数的模型
-(int) f:(int)x
函数模型从左到右说明
1、-或+表示对象函数或类函数,
2、(int)表示返回值
3、f:表示函数名称
4、(int)x表示函数形参多参数函数
带两个参数(函数名: f:: ) -(int) f:(int)x :(int)y
参数能够在:前面设置一个标签,也就是在:前面的名称,它也是函数名的一部分,
标签是为了方便阅读,不带标签实际上也有一个匿名标签。
上面函数可以写成
-(int) f:(int)x g:(int)y
第一个参数函数名其实就是它的标签。
-
C++与OC函数调用比较
函数类型 C++ Object-C 无参数 int say();
int res = obj->say();-(int) say;
int res = [obj say];一个参数 int say(int a);
int res = obj->say(1);-(int) say:(int)a;
int res = [obj say:1];两个参数 int say(int a,int b);
int res = obj->say(1,3);-(int) say:(int)a :(int)b;
int res = [obj say:1 :3];带标签 int sayAndWrite(int a,int b);
int res = obj ->sayAndWrite(1,3);-(int) say:(int)a andWrite:(int)b;
int res = [obj say:1 andWrite:3];