学习IOS开发的第4天

今天开始学习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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值