iOS基礎問題。。。

2022-09-12 02:33:07 字數 1545 閱讀 1459

1.深複製和淺複製的區別

物件拷貝的兩種方式,深複製就是複製整個物件到另乙個記憶體中,淺複製就是複製指向物件的指標,並不拷貝物件本身。

簡單的來說淺複製就是兩個變數指向了同一塊記憶體區域,深複製就是兩個變數指向了不同的記憶體區域,記憶體中的類容是一樣的。

2.非集合對像的copy和mutablecopy  

(1)可變物件的copy和mutablecopy方法都是深複製

(2)不可變物件的copy方法是淺複製,mutablecopy方法是深複製

(3)copy方法返回的物件是不可變物件

3.集合對像如果用copy 內部的元素是淺複製如果要深複製則:

nssarray *array2 = [[nssarrray alloc]initwitharray:array1 copyitem:yes];這樣做的結果是內部元素都是深複製。

4.oc中屬性特徵

主要有assign retain copy  還有readonly,readwrite.   另外,atomic和nonatomic;以及strong,weak。

(1)readwrite是可讀可寫特徵;需要生成getter方法和setter方法;

(2)readonly是唯讀特性只會生成getter方法不會生成setter方法;

(3)assign賦值特性,setter方法將傳入引數賦值給例項變數;

(4)retain 表示持有特性,setter方法將傳入引數先保留,再賦值,並且變數retaincount(引用計數)+1;

(5)copy 通過copy將物件複製乙份,之前的物件會釋放;

(6)strong 強引用,計數器+1;

(7)weak 弱引用 計數器不加一;

(8)nonatomic 非原子性;(一般使用他)

(9)atomic 原子性,確保其操作的原子性;

(10)unsafe_unretained 和weak的功能差不多

5.oc中的記憶體管理

每個oc物件都有自己的引用計數器,是乙個整數表示物件被引用的次數,即現在有多少東西在使用這個物件。物件剛被建立時,預設計數器值為1,當計數器的值變為0時,則物件銷毀。

在每個oc物件內部,都專門有4個位元組的儲存空間來儲存引用計數器。  而判斷對像是否要銷毀的唯一依據的是應用計數是否為0 為0則銷毀。

當物件被銷毀時,系統會自動向物件傳送一條dealloc訊息,一般會重寫dealloc方法,在這裡釋放相關的資源,dealloc就像是物件的「臨終遺言」。一旦重寫了dealloc方法就必須呼叫[super dealloc],並且放在**塊的最後呼叫(不能直接呼叫dealloc方法)。

一旦物件被**了,那麼他所佔據的儲存空間就不再可用,堅持使用會導致程式崩潰(野指標錯誤)。

arc automatic reference counting 自動引用計數---一般使用這個 

mrc manual reference counting 手動引用計數

自動釋放池。

6.kvc  kvo

kvc key value coding  鍵值編碼

[ setvalue:  forkey:]

kvo  簡單的通知模式

iOS網路基礎 iOS網路基礎

ios網路基礎 ios網路基礎 建立請求 nsurlrequest 客戶端發起請求 nsurlconnection 接收伺服器端的響應 nsurlconnectiondatadelegate 從伺服器端的響應中獲取資料 複製 上面提到的這些屬性都是唯讀的。因此我們應使用nsmutableurlreq...

iOS 定位 基礎

原文 ios中的core location提供了定位功能,能定位裝置的當前座標,同時能得到裝置移動資訊。因為對定位裝置的輪詢是很耗電的,所以最好只在非常必要的前提下啟動。其中,最重要的類是cllocationmanager,定位管理。其定位有3種方式 1,gps,最精確的定位方式,貌似iphone1...

IOS 學習基礎。

在bank.h檔案中 import inte ce bank nsobject nsstring name int amount void print void addamount int a int amount bank initwithname nsstring n andamount int...