iphone开发之object c基础一定义接口
要做APP的IPHONE版,小组中大家都不会,毕竟IPHONE开发对学生来说门槛还是很高的,主要是硬件成本,一个MAC电脑大约要一万多,普通人家的孩子根本买不起。所以,只要自己硬着头皮来学了,也会将学习笔记一一写出来供大家参考。
首先说说类的定义,在Object-C中必须首先定义一个接口,该接口用于描述这个类的组成,包含成员变量、类变量、类方法、成员方法。接口文件的扩展名为h,也就是定义为C 语言中的头文件。
下面是一个类的定义,该类完成的功能是使用两个两个int型的数字组成一个分数。
Fraction.h
#import <Foundation/Foundation.h>
static int t=0
@interface Fraction: NSObject{
int numerator;//分子
@public int denominator;//分母
}
-(void) setNumerator: (int) numerator;//numerator 的setter 方法
-(void) setDenominator: (int) denominator;//denominator 的setter 方法
-(void) setNumerator: (int) numerator andDenominator: (int) denominator;
//一个同时设置两个成员变量的快捷方法
-(int) numerator;//numerator 的getter 方法
-(int) denominator;//denominator 的getter 方法
-(void) print;
+(void) t;
@end
一个object c中的接口就是C语言中的一个HEADER文件,这个文件的结构如下:
我们来逐行看一下上面的内容:
(1.) 这里与C 语言不同的是导入头文件使用的是import,而不是include。另外与C 语言一样的地方是如果你想从的地方是如果你想从当前目录查找Header 文件,找不到就到系统的头文件库中查找,请使用#import “Header 文件”,如果你只想从系统的头文件库中查找,请使用#import<Header 文件>。Foundation/Foundation.h 包含了Foundation Kit 中的所有的头文件定义,GNUStep 的Object-C 的Foundation 头文件在\GNUStep 安装目录\GNUstep\System\Library\Headers\Foundation 文件夹。GNUStep 的Object-C 的AppKit 头文件在
\GNUStep 安装目录\GNUstep\System\Library\Headers\ AppKit 文件夹。
(2.) static 标识的类变量定义在接口的外面,类变量只能本类访问,除非提供类方法给外部
访问这个类变量。
(3.) Object-C 中的@+指令表示C 语言之外的Object-C 的衍生语法,因此@interface 表示定义了一个接口,接口名称之后紧跟了一个冒号,冒号后是父类的名字,Object-C 中的顶级父类是NSObject。
(4.) 接口定义之后紧接着一对{ },其中定义了成员变量,所谓的成员变量就相当于JAVA 中的
实例变量,从属于类的对象。Object-C 中的成员变量使用@public、@protected、@private作为访问修饰符,默认是@protected。这里你要知道的是Object-C 中只有成员变量有访问修饰符,类变量、类方法、成员方法是没有访问修饰符的,所有的方法都是public 的,所有的类变量都是私有的。
(5.) 以-开头的方法为成员方法,以+开头的方法为类方法,方法中的类型描述(返回值类型、
参数类型)都必须使用( )包围。如果方法有多个参数,每个参数都有一个标签名(可以
省略,但不建议这样做),每个标签名之后使用冒号与参数描述分隔。在有多个参数的
方法中,实际的方法名称为 方法名:标签名1:标签名2:… …,上面的拥有两个参数的方
法的方法名为setNumerator:andDenominator:。与JAVA 不同的是Object-C 中的
类方法只能类调用,如果你使用对象调用会报错,而JAVA 仅仅是在编译期给出警告。
(6.) 以@end 表示接口定义结束。这是因为与JAVA 不同的是JAVA 的类型定义使用{ }包围,
而Object-C 中的{ }只包围成员变量,因此必须有个结束标志,一般JAVA 程序员经常会忘
记写这个结束标记。
这里你要知道Object-C 的@interface 与JAVA 的interface 并不是一回事儿,后面你会看到
Object-C 中的@protocol 与JAVA 中的interface 才是等同的。这里你只需要记住的是Object-C
中的@interface 只是类的一个描述,因为@interface 通常在独立的h 文件中,你可以把它类
比成C 语言中的函数原型,也就是在Object-C 里应该叫做类的原型。通过这个原型,编译
器可以知道具体实现类有哪些功能。
上面的接口中的方法很简单,主要就是成员变量的setter、getter 方法,这与JAVA 没有什么
不同的。但是你会发现getter 方法没有以get 作为方法名称前缀,这是因为get 开头的方法
在Object-C 中有着特殊的含义,这在后面将会看到。
摘自 TQUDING的专栏
相关新闻>>
- 发表评论
-
- 最新评论 更多>>