iOS OC 物件導向語法

2021-09-09 03:32:07 字數 3417 閱讀 9309

2)分類/類別(category):允許以模組的方式向現有類定義新增新的方法(預設不能新增例項變數)。擴充套件自己或他人以前實現的類,使它適合自己的需要。

3)類的擴充套件:有一種特殊的情況是建立乙個未命名的分類,並且括號「( )」之間不指定名字。

4)抽象類:有時建立類只是為了更容易建立子類。因此,這些類名為抽象類,或等價的稱為抽象超類。在該類中定義方法和例項變數,但不希望任何人從這個類建立例項。

5)類與類之間的關係:

#import:檔案包含。這種方式會包含被引用類的所有資訊,包括被引用類的變數和方法;

@class :類的宣告。這種方式只是告訴編譯器另乙個類的宣告,具體這個類裡邊有什麼資訊,這裡不需要知道,等實現檔案中具體用到時,

才會真正的去檢視引用類的資訊,因為編譯器不需要引入和處理整個檔案,只需知道是乙個類名,在 .h 檔案中使用 @class

指令提高了效率。

6)類的載入:

7)是在子類中使用的例項變數,必須先在介面部分宣告,而不是在實現部分宣告。在實現部分宣告和合成的例項變數是私有的,子類中不能直接訪問,需要明確定義或合成取值方法,才能訪問例項變數的值。

8)類字首:

類字首的設定

xcode 6 之後:

設定完後,再建立新的檔案時會自動新增上設定的類字首。

3)例項初始化

2>、構造方法:例項初始化常見的程式設計習慣是類中所有初始化方法都以 init 開頭。如果希望在類物件初始化時做一些事情,可以通過過載 init 方法達到這個目的。下面是過載 init 方法的乙個標準模板。

不帶引數:

- (instancetype)init

return self;

}帶引數:

- (instancetype)initwithage:(int)age andno:(int)no

return self;

}類方法:

+ (instancetype *)studentwithage:(int)age

4)訊息:請求乙個類或例項來執行某個操作時,就是在向它傳送一條訊息,訊息的接受者稱為接收者。

5)類方法(靜態方法):是對類本身執行某些操作的方法。

6)重寫(覆蓋):在子類中新建乙個與父類中的方法同名的方法。子類中的新方法必須具有相同的返回型別,並且引數的數目和覆寫的方法相同。

7)過載:在類中,相同名字不同引數的方法的寫法有乙個專門的術語來描述,叫做過載。

8)懶載入

2)例項變數的定義作用域

@public      全域性都可以訪問,例項物件可以使用符號 「->」 直接訪問例項變數。   

@protected 只能在類內部和子類中訪問 (訪問器方法 預設) 。

@private 只能在類內部訪問 (合成取值方法 預設)。

@package 常用於框架類的例項變數,同一包內能用,跨包就不能訪問。

3)訪問器方法(accessor):取值方法和設值方法通常稱為訪問器方法。通常例項變數宣告時以下畫線( _ )字元開頭,此例項變數預設為保護(@protected)的。在類內部和子類中都可以訪問。

4)合成取值方法:通常例項變數宣告時不以下畫線( _ )字元開頭,以字母開頭,並且此例項變數是私有(@private)的。只能在類內部訪問。

2>、@property 的修飾

5)點運算子(點語法):訪問的是方法(setter/getter 方法),不是例項變數。

6)尖運算子(->):當例項變數定義為@public型別時,例項物件可以使用符號 「->」 直接訪問例項變數。 如:car -> _speed = 80; int a = car -> _speed;

7)區域性變數:是基本的 c 資料型別,並沒有預設的初始值,所以在使用前要先賦值。

靜態變數:在區域性變數宣告前加上關鍵字 static ,可以使區域性變數保留多次呼叫乙個方法所得的值。靜態變數的初始值為 0 。

外部變數:在方法外定義的變數不僅是全域性變數,而且是外部變數。

2)多型:使不同的類共享相同方法名稱的能力稱為多型。能夠使來自不同類的物件定義相同名稱的方法。

3)動態型別:id 型別的物件。在執行時而不是編譯時確定物件所屬的類,能使程式直到執行時才確定物件所屬的類。

處理動態型別的方法:

4)消除 performselector: 方法警告

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-warc-performselector-leaks"

// performselector: 方法

#pragma clang diagnostic pop

2>、定義乙個協議很簡單:只要使用 @protocol 指令,後面跟上你給出的協議名稱。定義一項協議時,可以擴充套件現有協議的定義。

@protocol playerdelegate - (void)end;

@end

3>、協議的修飾

@optional:該指令之後列出的所有方法都是可選的。

@required:該指令之後列出的所有方都是必須實現的,預設。由於 oc 是弱語法,雖然字面上是必須,但編譯器並沒有強求實現。

4>、協議的宣告

@protocol  protocol-name
5>、協議的檢查

// 檢查乙個物件是否遵守某項協議。

- (bool)conformstoprotocol:(protocol *)aprotocol;

// 用於獲取乙個協議名稱,並產生乙個 protocol 物件,conformstoprotocol: 方法期望這個物件作為它的引數。

@protocol(drawing)

// 檢查物件是否能夠響應 selector 所指定的方法。

- (bool)respondstoselector:selector

// 為名為 alloc 的方法生成乙個 sel 型別的值。

@selector(alloc)

2)非正式協議:實際上是乙個分類,列出了一組方法但並沒有實現它們。非正式協議通常是為根類定義的,有時,非正式協議也稱為抽象協議。

3)**:協議也是一種兩個類之間的介面定義。定義了協議的類可以看作是將協議定義的方法**給了實現它們的類。

**設計模式的總結:

**設計模式的開發步驟:

物件導向語法 01

物件導向和面向過程思想 oc是物件導向的,c是面向過程的。物件導向和面向過程只是解決問題的兩種不同思想 物件導向和面向過程的區別 以用電腦聽歌為例子 面向過程 物件導向 不是相親的 物件 區別分析 現實生活中物件導向的例子 常用術語 類和物件的關係 物件導向中有2個非常重要的概念 類和物件 如何建立...

python 物件導向 03 物件導向基礎語法

在python中可以使用以下兩個方法驗證 在識別符號 資料後輸入乙個.然後按下tab鍵,ipython會提示該物件能夠呼叫的方法列表 使用內建函式dir傳入識別符號 資料,可以檢視物件內的所有屬性及方法 提示 方法名 格式的方法是python提供的內建方法 屬性,稍後會給大家介紹一些常用的 內建方法...

OC物件導向語法《一》

oc是物件導向的,c是面向過程的。物件導向和面向過程只是解決問題的兩種不同思想 1 以用電腦聽歌為例子 a 面向過程 開啟電腦 關閉電腦 b 物件導向 不是相親的 物件 電腦 開機 關機 2 區別分析 面向過程關注的是解決問題需要哪些步驟 物件導向關注的是解決問題需要哪些物件 沒有開發經驗很難感受到...