動態機制 類別 協議 複製知識點總結

2021-08-27 10:39:49 字數 3387 閱讀 5518

1、

動態機制

特點:克服在源**編譯和鏈結的時候必須決定記憶體大小和位址。

讓程式根據使用者執行程式的環境來決定行為。

表現形式:

動態型別識別,直到執行時才決定乙個物件的類別」。

動態繫結,直到執行才決定呼叫哪個方法。

動態載入,執行時加入新的模組。

2、一些類的方法

-(bool)iskindofclass:class-object物件是否為類或其子類的成員

-(bool)ismemberofclass:class-object類是否有物件

+(bool)issubclassofclass:class-object類是指定類的子類

-(bool)respondstoseletor:selector:selector物件是否能響應selector方法

-(bool)instancesrespondtoselector:selector類是否能響應selector方法

-(id)performselector:selectorwithobject:object應用selector指定的方法

-(id)performselector:selector應用selector指定的方法

-(id)performselector:(sel)aselectorwithobject:(id)anobjectwithobject:(id)anotherobject傳遞引數object

[squareclass];//通過類名宣告

[mysquareclass];//通過物件名宣告

判斷兩個物件是否在乙個類

if([obj1class]==[obj2class])

3、類別category

類別的特點:

將方法的實現分解成一系列分離的檔案。

類別的方法,在執行時加入類中。

類別常用方式:

分解大的**

每個類別實現一類方法。

給已有的類新增新方法

不修改原有類的情況下,可以給該類新增新方法

注意:類別會替代原有類中的方法。

4使用類別步驟

先宣告類別-->實現類別-->使用類別

注意:類名的命名規範:類名+擴充套件方法。

在類別中,只能新增新的方法。

不能新增新變數。

5、類別的侷限

名稱衝突:

1)類別中的方法,不能與原類中已有的方法重名。

2)如果發生名稱衝突,類別具有更高的優先順序。

3)類別中的方法,將取代原有類中的同名方法,從而無法再使用原有方法。

4)解決名稱衝突:

可以在自己的類別方法名字前,增加乙個字首,以確保不發生名稱衝突。

6、類別的作用

將類的實現分散到多個不同檔案或多個不同框架中。

建立對私有方法的前向引用。

新增非正式協議,即給類新增新的功能函式。

7、非正式協議與委託類別

(1)協議

是乙個方法列表,可以由多個類共享。

它宣告了一系列的方法而不進行實現。

*作用:

使乙個類可以正式地宣告乙個方法列表

作為向外提供服務的介面

(2)非正式協議

列表中的方法是可以選擇性實現的。

用於將方法歸類,更好地組織**。

(3)正式協議是通過protocol指定的一些列方法的宣告,然後由實現該協議的類自己去實現這些方法。而非正式協議是通過向nsobject中新增乙個類別來實現,然後子類去繼承nsobject。

(4)注意:

乙個類可以採納多個協議

不同的協議之間用逗號分隔

8、延展類別又稱為擴充套件(extendsion)

extension是category的乙個特例。

其名字為匿名(為空),並且新新增的方法一定要予以實現。(category沒有這個限制)。

9、正式協議中的泛型

-(void)test:(id)obj;這表明test方法接受乙個任意型別的物件做為引數,但是該引數物件必須實現介面iquery(也可以說成該引數物件必須採用正式協議iquery)。

10、**(委託)設計模式

**是指乙個物件提供機會對另乙個物件中的行為發生變化時做出的反應。

@optional:該指令後的方法都是可選的,即不一定要實現.

@required關鍵字:該指令後面的方法,必須要實現.

11、物件複製

(1)複製物件顧名思義,複製乙個物件作為副本,它會開闢一塊新的記憶體(堆記憶體)來儲存副本物件,就像複製檔案一樣。即源物件和副本物件是兩塊不同的記憶體區域.

協議協議

(2)常用的可複製物件有:nsnumber、nsstring、nsarray、nsdictionary等

(3)複製物件的種類

copy:產生物件的副本是不可變的

mutablecopy:產生的物件副本是可變的

12、淺拷貝和深拷貝

淺複製只複製物件的本身,物件裡的屬性、包含的物件不做複製。

深複製則即複製物件本身,物件的屬性也會複製乙份。

foundation框架中支援複製的類,預設是淺複製。

(1)淺層複製(shallowcopy)

淺拷貝。

該操作不會複製物件。

淺拷貝後,新物件,只是指向原有物件的乙個引用。

(2)深層複製 (deepcopy)

深拷貝。

是一種會重新分配記憶體位址的拷貝方式。

利用深拷貝,將會複製產生乙個新的物件。

13、copy、mutablecopy和retaion之間的關係

(1)foundation可複製的物件,當我們copy的是乙個不可變的物件是,他的作用相當於retaion。

(2)我們使用mutablecopy時,無論源物件是否可變,副本是可變的。

並且實現了真正意義上的拷貝。

(3)當我們copy的是乙個可變的物件時,副本物件是不可變的,同樣實現了真正意義上的拷貝。

14、記憶體管理的原則

如果使用alloc、copy或者new方法獲得乙個物件

那麼該物件的保留計數器的值為1。

而且要負責釋放該物件。

15、單例模式

(1)單例設計模式運用較為普遍、廣泛且較為簡單的設計模式之一,它的設計原理是始終返回乙個例項,即乙個類始終只有乙個例項。

(2)建立單利設計模式的基本步驟:

1)宣告乙個單件的靜態例項,並初始化為nil;

2)建立乙個類的類工廠方法,生成乙個該類的例項,並且僅當這個類的例項為nil時;

3)覆蓋allocwithzone:方法,確保使用者在直接分配和初始化物件時,不會產生另乙個物件。

4)實現nscopying協議,覆蓋releas、autorelease、retain、retaincount方法,以確保單例的狀態

5)在多執行緒的環境中,注意使用@synchronized關鍵字,確保靜態例項被正確建立和初始化。

知識點8 動態規劃總結

今天也是為了cc,努力奮鬥的一天 o 前面幾節介紹了動態規劃的相關概念,並求解了一些經典的動態規劃模型。但是在實際碰到新的問題時,初學者總是容易陷入頭腦一片空白 完全無法設計狀態的情況,這是正常現象,因為動態規劃本身就需要經驗的積累和大量做題才能有較大的提公升。不過從上面的經典模型中還是能總結出一些...

Http協議知識點

1.型別 http伺服器會給在http中傳送的http資源物件附加乙個mime型別,接收http資源物件的客戶端會根據這個型別來判斷是否能夠進行處理,例如瀏覽器就能夠處理上百種mime型別的http資源物件 2.mime型別是一種文字標記,表示一種主要物件型別和一種特定的子型別,中間用一條斜槓來分隔...

HTTP協議基本知識點總結

3.http的報文格式 4.cookie,session和token 5.http1.x,http2.0的區別 6.https協議 http hypertext transfer protocol 是超文字傳輸協議的簡稱。它定義了http報文的結構和使用者和伺服器之間進行報文交換的格式。http是乙...