学习IOS开发的第4天

来源:互联网 发布:男士清爽乳液推荐 知乎 编辑:程序博客网 时间:2024/05/22 13:59
今天开始学习oc的高级语法。首先学习了类目和延展。类目是为了扩展类的方法,不会改变原始类。可以新建一个文件表示类目,也可以把类目写到原始类里面。这样还可以给方法进行分类,把相同功能的方法放到一个类目中。例如,我在Car.中声明了两个类目,里面的方法有不同的作用。
//声明一个opretation类目@interface Car (opretation)-(void)run;-(void)stop;@end//维护类目@interface Car (maintain)-(void)fix;@end
Car类名后面的括号中的是类目名。类目的实现写在.m文件中,例如
//实现opretation类目@implementation Car (opretation)-(void)run{    NSLog(@"汽车启动");}-(void)stop{    NSLog(@"汽车停止");}@end//实现maintain类目@implementation Car (maintain)-(void)fix{    //调用自己的私有方法    [self fixCar];}@end

类目为原始类扩展了一些方法,其他地方调用原始类里的方法时,也就可以调用类目里定义的方法。

延展是用来定义私有方法的,例如像java里private修饰的方法。写在.h文件中的方法都是可以被别人访问的,如果像定义私有方法,就可以写到延展中。不用延展定义私有方法也行,直接写在类的实现里。但是这样阅读和维护起来很麻烦,不能直接看出哪个是私有方法。于是最好还是把私有方法的定义写到延展中。延展于类目相似,但是延展的声明写在.m文件里,而且类名后面的括号为空的。例如

//延展,用于声明私有方法@interface Car ()-(void)fixCar;@end
方法的实现写在类的实现里。这样就实现了一个私有方法。

@implementation Car//......其他代码,这里省略-(void)fixCar{    NSLog(@"修理汽车");}@end
主类的代码如下
#import <Foundation/Foundation.h>#import "Car.h"int main(int argc, const char * argv[]){    @autoreleasepool {        Car *car = [[Car alloc]initWithId:1001 andName:@"BYD"];        [car run];        [car stop];        [car fix];    }    return 0;}




0 0