首先我们来看时钟类clock的设计
clock类.png
前缀@是objective-c(以下简称OC)特有的标识符,常用在使用类和对象的情况中。
@interface 是实现一个接口,这里是实现Clock类的接口。Clock:后面的NSObject意思是继承NSObject类。
类的属性声明使用@property ,比如图片中的@property int minute;声明了一个整型变量minute(分钟)。正如我们所知,时钟类应该有时、分、秒,对应着hour,minute,second。
-(void)中的-号表示的是实例方法(instance method),需要实例来调用。相反,+号表示类方法,不需要实例就可以调用。show方法的作用是将时钟打印出来,它的实现我们在另外一个文件写相应的代码。
对类的定义以@end结束
接下来我们看Clock类的实现文件。
类的实现.png
首先我们使用#import 把相应文件导进来,有c语言基础的同学都知道头文件是用#include<xxx.h>,而OC是用#import。这里的<Fundation/Fundation.h>是基础头文件,包含了输入输出等。
接下来是把刚才的Clock.h 导进来。
@implementation 是实现区块的开始,实现区块可以对公有方法、私有变量及方法进行实现。
show方法实现输出时钟类的三个属性,这里面的self类似于C++里面的this指针,也和python里的self相似。
NSLog()这个函数是输出函数,类似于C里面的printf()函数。
字符串前面的@,是OC的特点,这被称为常量NSString的对象。NSString例程是OC库中的一个函数,它只能显示或记录参数。但是它前面会显示该例程的执行的日期和时间。
实现区块以@end结尾。
最后我们来看程序入口,即main()函数所在的文件。
main.png
这里的main 函数和c语言的main函数很像。
我们的代码是放在@autoreleasepool所包含的代码块里,这个autoreleasepool由于笔者还没学到先暂时放一放。
[[Clock alloc] init] 是OC特有的消息传递机制,一般模式为:
[消息传递对象 消息]
刚才那条语句的意思是先在内存空间中分配(alloc)一段内存,然后再初始化(init),这样我们就初始化好了一个Clock对象指针c。
由于我们没有设置构造函数,所以得给属性赋值,即c.second =
OC的函数调用不像c++直接用"."来调用,而是用我们刚才讲的消息传递机制。
编译运行结果:
结果.png
网友评论