Objective-C筆記-2

weixin_34402408發表於2018-01-25

在學校學習結束,把東西都搬回家,還要一堆的散夥飯吃完了,搞完很多很多事情之後,終於在距離還有不到1個月的過年前,重新寫下東西,學學習什麼的···

那麼現在從Objective-C開始,也是我實習之前的知識點回顧,也算是一個複習吧····

上次的筆記,感覺好像還是有點凌亂,我還是按照當年lnj老師的思路去總結,再自己加上心得和體會吧,還有給個建議就是,有一本書叫做《Objective-C基礎教程》,這本書感覺還是不錯的,配合著lnj老師的視訊看,反正我是這樣乾的···

物件導向基本概念:

引用一句很牛逼的話,就是“萬物皆物件。”意思就是說,這個世界上所有的東西,都是一個物件,這樣這個東西,會一個方法,那麼這個東西就是物件,因為這個東西能幫別人,幹些事情,但是具體是什麼就不知道,但是在程式設計師看來啊,方法什麼的,這個函式,這個物件有什麼,會什麼,傳什麼值都是自己去賦予的。

 用書上的話去說,物件導向是相對程式導向而言

-物件導向和麵向過程都是一種思想

-程式導向

    +強調的是功能行為

    +關注的是解決問題需要哪些步驟

-物件導向

    +將功能封裝進物件,強調具備了功能的物件

    +關注的是解決問題需要哪些物件

這個是別人的例子啊;

-示例

-把衣服放進洗衣機

    +程式導向

        *開啟洗衣機

        *放進去衣服

        *關閉洗衣機

    +物件導向

        *洗衣機-開啟

        *洗衣機-儲存

        *洗衣機-關閉

這樣就應該不難理解的,那麼我在工作的時候首先要去找具有所需的功能的物件來用。如果該物件不存在,那麼建立一個具有所需功能的物件。最後這樣簡化開發並提高複用。    

那麼在OC中呢,面向對像的核心就是就是物件,若果一開始沒有,我們就去建立一個。 OC中建立物件比較複雜, 首先要理解一個概念叫做類。那麼我們在這個類上要賦予其方法,清楚將來建立出來的物件有哪些屬性和行為,我們就叫這個述事物通過類的形式體現,類是多個同種型別事物的抽象,概念上的定義。


-OC中的類相當於圖紙,用來描述一類事物。也就是說,要想建立物件,必須先有類。

-OC利用類來建立物件,物件是類的具體存在, 因此物件導向解決問題應該是先考慮需要設計哪些類,再利用類建立多少個物件。

-OC中用類來描述事物也是如此,擁有相同(或者類似)`屬性`(狀態特徵)和`行為`(能幹什麼事)的物件都可以抽像成為一個類:

    +屬性:對應類中的成員變數。

    +行為:對應類中的成員方法。

-定義類其實在定義類中的成員(成員變數和成員方法)

-一般名詞都是類(名詞提煉法),但是呢,若果這個物件擁有相同(或者類似)`屬性`(狀態特徵)和`行為`(能幹什麼事)的物件都可以抽像成為一個類;也就是放在一起,打包;


那麼如何定義一個類:

     1.必須以@interface開頭,@end結尾

     2.成員變數的宣告,必須寫在@interface與@end之間的大括號中

     3.方法的宣告必須在{}下面,不能寫在{}中

       如何實現一個類

-格式

@implementation MyClass

- (id)initWithString:(NSString *)aName

{

    //寫程式碼處

}

+ (MyClass *)myClassWithString:(NSString *)aName

{

    //寫程式碼處

}

@end

注意:!!!必須以@implementation開頭,@end結尾,類名必須和宣告的一致

這裡引用lnj老師的話

物件方法宣告和實現

特徵

    +物件方法以-開頭如 -(void)xx;

    +物件方法只能由物件來呼叫

    +物件方法中可以訪問當前物件的成員變數

    +呼叫格式 [物件名 物件方法名];

示例

```

//宣告沒有返回值的方法

- (void)method;

//宣告有返回值的方法

- (int)method;

//宣告有返回值有引數的方法

- (int)method: (int)var;

//宣告有返回值有多個引數的方法

- (int)method: (int)var1 andVar2: (int)var2;

實現

    +必須解除安裝以@implementation開頭,@end之間

    +在宣告的後面加上{}即表示實現

    +講需要實現的程式碼寫在{}中

類方法宣告和實現

-格式

    +將物件方法-號變為+號

-特徵

    +類方法以+開頭 如+(void)put;

    +類方法只能由類來呼叫

    +類方法中不能訪問例項(成員)變數,因為類方法由類來呼叫,並沒有建立儲存空間 來儲存類中的成員變數。

-類方法的好處:

    +不依賴於物件,執行效率更高;

    +能用類方法解決的問題,儘量使用類方法;

-類方法的場合:

    +當方法內部不需要使用到成員變數時,可以改為類方法

    +類方法一般用於編寫工具方法

-示例

```

//宣告沒有返回值的方法

+ (void)method;

//宣告有返回值的方法

+ (int)method;

//宣告有返回值有引數的方法

+ (int)method: (int)var;

//宣告有返回值有多個引數的方法

+ (int)method: (int)var1 andVar2: (int)var2;

```

-實現

    +必須解除安裝以@implementation開頭,@end之間

    +在宣告的後面加上{}即表示實現

    +講需要實現的程式碼寫在{}中

---

##3.物件方法和類方法區別

物件方法

    +物件方法是屬於物件的

    +以減號-開頭

    +只能讓物件呼叫,沒有物件,這個方法根本不可能被執行

    +物件方法能訪問例項變數(成員變數)

    +物件方法中可以呼叫當前物件的物件方法

    +物件方法中可以呼叫其他物件的物件方法

    +物件方法中部可以呼叫類方法

-類方法

    +類方法是屬於類的

    +以加號+開頭

    +只能用類名呼叫,物件不能呼叫

    +類方法中不能直接訪問例項變數(成員變數)

    +類方法中不能直接呼叫物件方法,要想呼叫物件方法,該物件必須通過引數傳入。

-使用場合:

    +當不需要訪問成員變數的時候,儘量用類方法

-類方法和物件方法可以同名


注意:通常會發生一些錯誤:

1)@interface @end和@implementation @end不能巢狀包含

2) OC是弱語法,可以只有@implementation,但實際開發中千萬不要這樣。

4)漏寫@end

5)兩個類的物件宣告順序(可以把順序打亂)

6)成員變數沒有寫在{}裡

7)方法的宣告寫在了{}裡面

8)在宣告時不能對類的成員變數進行初始化,請注意成員變數不能脫離物件而獨立存在

9)方法無法像函式那樣的呼叫

10)成員變數和方法不能用static等關鍵字修飾,不要和c語言混淆

11)類的實現可以寫在mian函式後面,在使用之前只要有宣告就可以

相關文章