學習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;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章