1.3 创办一个类
1、问题
面向对象的程序员喜欢能够将功能封装进对象中。此时,就需要定义一个类来封装属性和行为。
2、解决方案
Objective-C中的类需要有接口和实现定义。尽管不是绝对必要,但通常要将接口和实现分开放到不同的文件中。这2个文件的名字是一样的,但接口文件的扩展名是.h。
类文件的扩展名是.m。
要使用一个类,你必须将该类头文件导入到代码中。
3、原理
假如要定义一个Car类。
在Car.h中,放的是Car类的接口。类接口必须以@interface开头,以@end结尾。在这2者之间定义的就是类的属性和方法。
#import <Foundation/Foundation.h>
@interface Car : NSObject // 意思是说你的car是NSObject的一个子类,NSObject是Objective-C的根对象。
@end
在Car.m中,要先导入Car.h,然后用@implementation声明正在实现一个自定义类。
#import "Car.h"
@implementation Car
@end
要使用你的类,就需要导入Car.h,然后从该类实例化一个对象。要实例化一个对象,就要发送2条消息:alloc和init。它们都来自超类NSObject。
Car *car = [[Car alloc] init];
4、代码
//==============Car.h
#import <Foundation/Foundation.h>
@interface Car : NSObject
@end
//===============Car.m
#import "Car.h"
@implementation Car
@end
//==================main.m
#import "Car.h"
int main (int argc, const char * argv[]){
@autoreleasepool {
Car *car = [[Car alloc] init];
NSLog(@"car is %@", car);
}
return 0;
}
5、运行代码
clang -fobjc -framework Foundation Car.m main.m -o maccommandlineapp