天天看點

iOS Foundation 架構基類

 ios foundation 架構基類

太陽火神的美麗人生 ()

本文遵循“”創作公用協定

基類

title

topic

date

data types & collections

minor change

-

objective-c

performance

首先我們了解一下,面向對象與基于對象,下面引用一段:

“面向對象大家都很熟悉,可是基于對象就不一定了。兩個聽起來好象是同一回事,而事實上它們卻千差萬别。基于對象是指:我們采用對象封裝技術,将資料和操作捆綁在一起,但是并沒有合理地使用多态、繼承等面向對象技術進行軟體設計。其中的“沒有合理使用”這一修飾非常重要,它道出了面向對象和基于對象的本質差別。

雖然,聽起來面向對象我們很是熟悉,但就我的觀察,很多以前從事c程式開發的人,當他采用面向對象的程式設計語言(如c++)進行開發時,寫出來的程式卻是基于對象的。或者說他們是采用面向對象的語言編寫面向過程的程式!”

引用這段話,應原作者要求,需貼上下面的轉載說明:

原創作品,允許轉載,轉載時請務必以超連結形式标明文章  、作者資訊和本聲明。否則将追究法律責任。

在軟體設計領域中,“”是專指在中采用、、等設計方法。

這其中提到的“繼承”,涉及到基類和派生類,

:通過繼承機制,可以利用已有的資料類型來定義新的資料類型。所定義的新的資料類型不僅擁有新定義的成員,而且還同時擁有舊的成員。我們稱已存在的用來派生新類的類為父類,也就是基類。

這樣看來,确實有必要,在了解 ios 強大功能之前,先掌握基類提供了哪些功能,這樣便可上下自如,遊刃有餘。

上面清單中的内容,大體可以分類幾部分,一是 nsobject 基類相關的,一是采納的基類相關協定,再就是運作時及反射相關功能,最後就是記憶體管理。

而其中有三個,應屬于集合部分,但考慮到僅是準備階段,那麼就放到基類部分來研究為好:

這三個類,應該說都是為集合而生,nsnull 是為了 nil 能作為集合的元素;nsvalue 是為了能使标量能作為集合元素;而nsuuid,則是要能夠作為集合元素的自定義對象必須實作的對象是否相等的判定方法所傳回的辨別該對象的唯一值,當沒有值可用時,可使用 uuid來確定唯一;不過 nsuuid 也是取消的裝置唯一編号的一種替代方案,但我認為它并不一定專為它而生!

接下來,先研究 nsobject 這個絕大多數類的基類以及相應的協定,這些協定方法對日後的使用也很關鍵,該基類将其派生類與系統運作時有機地聯接起來,這樣 ios 提供的強大功能便在掌握之中,并可在掌握其基本運作機理的情況下,有效地進行擴充。真可謂,上可升天,下可遁地。

1、nsobject 基類及相關協定