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...