一、instancetype和id關鍵字的區別
1)instancetype表示方法的返回型別和呼叫方法的物件型別相同。
2)在object-c引入instancetype之前,初始化方法的返回型別都是id,id的定義是【指向任意物件的指標(相當於c語言中的void*)】
它們的區別是:instancetype只能用來表示方法返回型別,但是id還可以用來表示變數和方法引數的型別。
二、在標頭檔案中的方法宣告順序
1)這算是乙個約定,按照先後順序是:例項變數、類方法(靜態方法)、初始化方法、其他方法。
三、生成隨機數的方法—arc4random()
1)使用方法
通過arc4random() 獲取0到x-1之間的整數: int value = arc4random() % x;
獲取1到x之間的整數的**如下:int value = (arc4random() % x) + 1;
四、[nbritem count]: unrecognized selector sent to instance 0x100309120'下
這個是常見的錯誤,碰到這種錯誤,從字面意思上看是向物件傳送了乙個不能識別的selector,因此要檢查nbritem物件是否有count這個方法。
五、弱引用和強引用
1)指標變數指向了某個物件,那麼相應的物件就會多乙個擁有者,並且不會被程式釋放,這種指標特性被成為強引用。
2)程式也可以選擇讓指標變數不影響其指向的物件的擁有者個數,這種不會改變物件擁有者個數的指標特性被成為弱引用。常用來解決強引用迴圈的問題,可以先分析出父子關係,然後將父物件保留強引用的特性,然後子物件搞成弱引用特性(__weak),具有弱引用特性的指標指向的物件被釋放後,指標會自動設定為nil。
六、屬性的特性
任何屬性都可以有一組特性,用於描述相應訪問方法的行為,比如:
@property(nonatomic, readwrite, strong) nsstring *itemname
任何屬性都有三個特性
1)多執行緒特性
nonautomic 和 atomic ,大多數情況下,我們都設定屬性為nonautomar,因為預設是atomic,所以我們要指定為nonautomar。
2)讀寫特性
readwrite和readonly,從字面意思就可以知道,編譯器會為readwrite的屬性生成set和get方法,但是readonly的屬性只有get方法。
3)記憶體管理特性
strong、weak、copy、unsafe_unretained。這些型別決定相應的例項變數將如何引用物件。
未完待續。。。
iOS開發 OC篇 單例模式
回顧一下load和initialize方法,有幾點需要注意。load方法和initialize方法分析 1 load方法 1 當類被引用程序式的時候會執行這個函式 2 乙個類的load方法不用寫明 super load 父類就會收到呼叫,並且在子類之前。3 category的load也會收到呼叫,但...
iOS開發之OC篇(8) NSData
版本 xcode 8.2.1 nsdata為二進位制資料,在檔案操作 如儲存到本地 網路 以及核心圖形影象中使用較廣泛。nsdata的建立 鑑於已經有人總結了,這裡偷懶引用一下 物件方法建立 nsdata data1 nsdata alloc init nsdata data2 nsdata all...
iOS開發之OC篇(9) NSURL
xcode 8.2.1 當然也會搜尋到很多關於nsurl的部落格,包括介紹和用法等等。但如果我們還不放心,不確定他們寫的是否完全準確,怎麼辦?來,開啟xcode新建乙個nsurl工程,我們來看看官方文件怎麼說。通過以上方法,我們得到蘋果的官方文件如此描述 好了好了,了解得差不多了,下面我們來總結一下...