原创 Objective-C 2.0之屬性(1)——引入屬性(Property)的預編譯指令

Apple在Objective-C 2.0中引入了屬性(Property),它組合了新的預編譯指令和新的屬性訪問器語法。 新的屬性功能可以顯著減少必須編寫的代碼行數,讓代碼看起來更幹練,也可減少出現 Bug的機會。   0x01 使用屬性

原创 深入瞭解Xcode 7——調試

做程序員,要相信bug無處不在的真理。 我們在查找bug的過程,就叫調試(debugging)。   0x01 暴力測試 暴力測試是最簡單的。 在程序中寫入輸出語句(如printf、NSLog等)來輸出程序中的控制流程和一些數據,這就是暴

原创 Xcode使用入門——源文件組織

爲了大型程序的可讀性更強,也爲了程序使用者能更快地找到相應代碼,我們必須將程序拆分成多個小文件再重新組織起來。這樣做還可以更容易地把部分代碼發送給別人而不必打包整個項目。0x01 拆分接口和實現在類的定義中,代碼很自然地拆分成接口和實現兩

原创 Objective-C的跨文件依賴關係

0x01 什麼是依賴關係 依賴關係是兩個實體之間的一種關係。 依賴關係可以存在於兩個類之間,也可以存在於兩個或多個文件之間。兩者之間任何一個發生變化,都需要重新編譯相關的文件來適應變化。 導入頭文件使頭文件和源文件之間建立了依賴關係。由於

原创 Objective-C繼承(Inheritance)——工作機制分析

0x01 方法的調度不支持繼承程序中的方法調度支持繼承程序中的方法調度1、Circle類擁有一個指向其超類Shape的引用指針。消息傳遞時,Objective-C的方法調度機制會使用該指針來找到正確的方法實現;2、當代碼發送消息時,Obj

原创 Objective-C繼承(Inheritance)——重寫方法(Setter / Getter)

0x01 重寫方法   在製作全新的子類時,經常會添加自己的方法。 有時會添加一個能夠向類中引入特有功能的新方法,有時也會替換或改進某個超類定義的現有方法。 當然也可以選擇不添加新特性,而是創建一個子類並通過它重寫繼承自超類的行爲。  

原创 Objective-C的Foundation框架——字典NSDictionary

0x01 NSDictionary 字典NSDictionary是關鍵字及其定義的集合。 NSDictionary可以在給定的關鍵字下存儲一個數值(可以是任意類型的Objective-C對象),可以通過該關鍵字查找對應的數據。 字典NSD

原创 預備知識(3)——導入頭文件的方法

  使用引號 #import "Tire.h" 使用帶引號的#import語句說明導入的是項目本地的頭文件,該文件對於參與這個項目的人是可編輯的。   使用尖括號 #import <Cocoa/Cocoa.h> 使用帶尖括號的#imp

原创 Objective-C的Foundation框架——字符串NSString

這裏要介紹的第一個真正的類是NSString,也就是Cocoa中用來處理字符串的類。   0x01 創建字符串 NSstring的stringWithFormat:方法通過格式化字符串和一些參數來輸出格式化的結果來創建NSString。

原创 Objective-C的Foundation框架——一些非常有用的數據類型

0x01 表示範圍的結構體 NSrange概述 NSRange用來表示相關事物的範圍,通常是字符串裏的字符範圍或者數組裏的元素範圍。 typedef struct _NSRange { unsigned int location;

原创 Objective-C的Foundation框架——枚舉NSEnumerator

0x01 枚舉 NSArray經常要對數組中的每一個元素執行同一個操作,我們可以選擇編寫一個從0到[array count]的循環來讀取每個索引處的對象,也可以使用NSEnumerator,Cocoa可以用它來表示集合中迭代出的對象。 o

原创 Objective-C複合(Compostion)——存取方法

0x01 存取方法是間接的一個例子上一篇中,我們已經構造了一臺“車”。假設現在我想要隨時更換自己喜歡的發動機和輪胎,就要用到“存取方法”。“存取方法”是用來讀取或改變某個對象屬性的方法,例如此前見過的setFillColor:就是一個存取

原创 Objective-C的MRC手動內存管理——自動釋放

內存管理對於Objective-C來說真是一個複雜的問題,很多時候我們要弄清楚某個對象的所有權歸屬並不容易,由此造成難以找到合適的釋放對象的方法。 但Cocoa中有一個自動釋放池的概念給我們提供了便利。   0x01 自動釋放池的創建 a

原创 Objective-C的Foundation框架——NSNumber/NSValue/NSNull

NSArray和NSDictionary只能存儲對象,不能直接存儲任何基本類型的數據(如int、float和struct)。 但是我們可以用對象來封裝基本數值,然後再放入NSArray和NSDictionary中。 如果想要使用對象來處理

原创 Objective-C複合(Compostion)——複合的基礎概念

0x01 基本操作在Objective-C中,複合是通過在一個類中聲明一個指向另一個類對象的指針作爲實例變量來實現的。嚴格地說,只有對象間的組合才能叫做複合。如果只是int、float、enum和struct等基本類型就只能說是對象的一部