Objective-C中的類學習第一篇

1.類的設計:

  1> 類名(第一個字母大寫,不要用下劃線)

  2> 屬性

  3> 行爲(功能)

//因爲使用了NSObject

#import<Foundation/Foundation.h>

/*

  類名:Car

  屬性:輪胎個數,速度

  行爲:跑

 */

//類的聲明

//用來聲明對象的屬性和行爲

//:NSObject 目的是:讓Car這個類具備創建對象的能力

@interface Car : NSObject

{//用來聲明對象屬性

    @public

    //int wheels = 4;不允許在這裏初始化

    //static int wheels;不允許隨便講成員變量當做C語言中的變量來使用

    int wheels;//輪胎個數

    int speed;//時速(km/h

}

//方法(行爲):方法名、參數、返回值

//只要是OC對象的方法,必須以減號 - 開頭

//OC方法中任何數據類型都必須用小括號()擴住

//OC方法中的():括住數據類型

//方法是方法,不是函數,不可以使用static等來修飾。

- (void) run;


@end

//類的實現

@implementation Car

//方法的實現(說清楚方法裏面有什麼代碼)


- (void)run

{

    NSLog(@"車子跑起來了!");

}


@end


int main()

{

    //OC中,想執行一些行爲/方法,就寫上一個中括號[行爲執行者 行爲名稱]

    

    //利用類來創建對象

    //執行了Car這個類的new行爲來創建新對象

    

    //定義了一個指針變量pp將來指向的是Car類型的對象

    //[Car new]每次都會創建出一個新的對象,並返回新對象的地址

    Car *p = [Car new];

    

    Car *p2 = [Car new];

    p2->wheels = 5;

    p2->speed = 300;

    

    //p所指向的對象的wheels屬性賦值

    p->wheels = 4;

    p->speed = 250;

    

    //p所指向的對象發送一條run消息

    [p run];

    

    NSLog(@"車子有%d個輪子,時速:%dkm/h",p->wheels,p->speed);

    return 0;

}



以上這些是學習OC時做的一些筆記,包含了一些基礎知識以及錯誤須知。

下面對於類對象的內存分配中的一個易錯點舉個小例子

@interface Car : NSObject

{

    @public

    int wheels;

    int speed;

}


-(void) run;

@end


@implementation Car


-(void)run

{

    NSLog(@"%d個輪子的車子,以速度%d km/h行駛",wheels,speed);

}


@end

void test(int w,int s)

{

    w = 20;

    s = 300;

}

void test1(Car *newC)

{

    //newC這個指針修改了c這個對象所在地址中對應的值

    newC->wheels = 5;

}

void test2(Car *newC)

{

    Car *c2 = [Car new];

    c2->wheels = 5;

    c2->speed = 200;

    

    //此時,newC指向了新的對象c2

    newC = c2;

    //所以這個時候,newC修改的是c2中的wheels的值,而不是c中的值,c對象並未受影響

    newC->wheels = 6;

}

int main()

{

    Car *c = [Car new];

    c->wheels = 4;

    c->speed = 100;

    

    //test(c->wheels,c->speed);    //此時只是傳入了c指向的對象中的wheelsspeed的值,等同於test4100)。

    //test1(c);

    test2(c);

    

    [c run];

    return 0;

}

test 的結果是4個輪子的車子,以速度100 km/h行駛

test1的結果是5個輪子的車子,以速度100 km/h行駛

test2的結果是4個輪子的車子,以速度100 km/h行駛


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