原创 Objective-C對象的初始化(1)——分配與初始化

0x01 分配對象 分配(allocation)是一個新對象誕生的過程。 向某個類發送alloc消息,就能爲類分配一塊足夠大的內存,用來存放該類的全部實例變量,並返回對象的指針。 同時alloc方法還順便將這塊內存區域全部初始化爲0: 整

原创 Objective-C的委託(Delegate)

0x01 什麼是委託 Cocoa中的類經常使用一種名爲委託(delegate)的技術。 委託是一種對象,另一個類的對象會要求委託對象執行它的某些操作。 0x02 委託和類別 委託+類別的一種應用:創建一個非正式協議。 通過創建非正式協議,

原创 iOS開發中的ARC內存管理機制(2)——強引用與弱引用

0x01 強引用與弱引用 當用指針指向某個對象時,你可以通過retain/release管理它的內存,也可以不管理。 如果你管理了,就擁有對這個對象的強引用(Strong Reference); 如果你沒有管理,那麼你擁有的就是弱引用(W

原创 Objective-C的協議(Protocol)——協議的聲明及採用規則

0x01 正式協議 這裏所說的協議(Protocol)指的是相對於非正式協議(Informal Protocol)的正式協議。 與非正式協議一樣,正式協議是包含了方法和屬性的有名稱列表。 但與非正式協議不一樣的是,正式協議中聲明的方法,必

原创 Objective-C的代碼塊(Block)

0x01 什麼是代碼塊 Objective-C中的代碼塊(Block)是iOS4.0和Mac OS X 10.6之後的系統中引進的對C語言的擴展。 它在Xcode和Clang編譯器中是有效的,但它並不屬於ANSI C標準。 代碼塊對象(通

原创 Objective-C中的異常——try/catch/throw/finally的使用

0x01 什麼是異常 異常指的是程序運行中的意外事件,發生異常後,程序可以創建一個異常對象並執行特定的操作方式。 Objective-C的異常機制和C++的異常機制是兼容的。 Cocoa中使用NSException類來表示異常,我們也可以

原创 Cocoa的內存管理規則

0x01 三條基本管理規則 1、使用new、alloc和copy方法創建一個對象時,該對象的引用計數器值被置爲1。當不再使用該對象時,應該向該對象發送一條release或autorelease消息,使該對象在壽命結束時被銷燬; 2、通過其

原创 iOS開發中的ARC內存管理機制(3)——OC對象和CF對象之間的橋接(Bridge)

0x01 什麼是對象間的橋接 Core Foundation 是一組C語言接口,它與Foundation功能相同,只是Foundation框架提供的是Objective-C接口。 Core Foundation中的對象也有類似引用計數的概

原创 Objective-C的協議(Protocol)——協議的實現

協議就是定義了一組方法,然後要求其他類去實現。 以下類的複製來舉例說明,遵守NSCopying協議的類是如何實現複製的。   0x01 NSCopying協議 NSCopying是對象拷貝的協議。 類的對象如果支持拷貝,則該類應遵守並實現

原创 AppKit簡介

Mac系統的應用程序使用的是AppKit框架,這裏按書裏的內容,先對AppKit簡單介紹。 在AppKit裏面可以看到Cocoa框架中關於用戶界面的大量資源。 按《Objective-C 基礎教程(第2版)》的範例,這裏也用一個大小寫轉換