這個東西實在太多了,因為他是OC中所有類的根類,沒有父類,這里只能簡單的說一下,其他簡單的自定義相信大家都會。
NSObject是大多數(shù)Objective-C類的繼承的根類;它沒有父類。通過NSObject,其它類繼承了一些基礎(chǔ)的與Objective-C語言編譯器系統(tǒng)之間的接口,并且獲得了在它的實例中表現(xiàn)為一個對象的能力。以下是NSObject類的繼承圖:

盡管NSObject不是一個嚴格的抽象類,實際上它已經(jīng)是一個類。但是通過它自己一個除了表現(xiàn)為一個簡單類之外,NSObject實際上幾乎無法完成任何有用的操作。為你的程序添加任何屬性(attributes)并制定實現(xiàn)邏輯,你必須創(chuàng)建一個或者多個從NSObject繼承或者父類從NSObject繼承的類(class)。
NSObject采用(adopts,或者說是繼承實現(xiàn))了NSObject協(xié)議(protocol)。NSObject協(xié)議(protocol)允許被多個根類(root class)采用,比如NSProxy另一根類(root class),并不是從NSObject繼承,但卻也采用了NSObject協(xié)議(protocol)所以它在Objective-C中便有了和NSObject類相似部分的類的定義(interface)和功能。
NSObject根類,和采用了NSObject協(xié)議或者其它根類協(xié)議(“root” protocols)一道,為所有的非代理(non-proxy)Cocoa對象指定了以下的定義(interface)和特有的事件:
- Allocation, initialization, 和 duplication。一些NSObject方法(包括一些采用的協(xié)議)用來處理創(chuàng)建(creation),初始化(initialization)和復(fù)制(duplication)對象。
- alloc和allocWithZone:方法在內(nèi)存中為一個對象分配了內(nèi)存空間并且設(shè)置它指向的對象的編譯器類定義(即是告訴編譯器定義了一個類,譯者注)。
- init方法為對象的屬性初始化(prototype),一個讓實例變量初始化狀態(tài)的進程。類方法中的initialize和load讓一個類有機會初始化它們自己。
- new一種方便的結(jié)合分配內(nèi)存和初始化的方法。
- copy和copyWithZone:方法復(fù)制任意對象的內(nèi)存的實現(xiàn)方法(從NSCopying協(xié)議來的);mutableCopy和mutableCopyWithZone:(在NSMutableCopying協(xié)議中定義)將被應(yīng)用于(mplemented by)該類來完成不定的對象拷貝(make mutable copies of their objects)。
- Object retention and disposa(對象的保留和釋放)。接下來的方法對于面向?qū)ο蟮某绦蛴绕涞闹匾?,那就是如何傳統(tǒng)的,明確的,形式化的(traditional, and explicit, form)實現(xiàn)內(nèi)存管理。
- retain方法,增加對象的計數(shù)器。
- release方法,減少對象的計數(shù)器
- autorelease方法,自動減少對象的計數(shù)器,但是以推遲的方式來實現(xiàn)。
- retainCount方法,返回一個對象當(dāng)前的計數(shù)器
- dealloc方法應(yīng)用于類來釋放對象實例變量并釋放動態(tài)內(nèi)存。
- Introspection 和 comparison(反省機制和對比機制).
許多NSObject方法使你能夠讓編譯器查詢一個對象。反省方法(introspection methods)幫助你探查一個對象在類繼承機制中的位置,決定是否實現(xiàn)一些方法,并測試它是否遵循一些協(xié)議。而一些類僅是有一些方法。 - superclass和class方法(類和實例(class and instance))分別返回接收器的父類和類,作為一個Class對象。
- isKindOfClass:和isMemberOfClass:,通過這兩種方法可以確定一個類的從屬關(guān)系。后者測試一個接收器是否是一個指定類的實例;而后者可以測試類的從屬關(guān)系。
- respondsToSelector: 方法測試一個接收器是否通過selector實現(xiàn)(implements)了一個標(biāo)志符話的方法。而instancesRespondToSelector:測試了一個給定的類實例化之后(這個消息的接收方法為靜態(tài)方法,譯者注)是否實現(xiàn)了一個指定的方法。
- conformsToProtocol:方法,測試接收器(對象或者類)符合一個給定的協(xié)議(protocol)。
- isEqual: 和 hash方法,用于對象比較。
- description方法,允許一個對象返回一個字符串來描述它的內(nèi)容;這個常用于調(diào)試debugging (“print object”命令 ) 。通過“%@”以字符串輸出特殊的指定對象。(即是以NSLog的形式輸出)
Object encoding and decoding(對象的編碼和解碼).接下來的方法將與對象的編碼和解碼方式有關(guān) (作為一個歸檔處理的一部分):
encodeWithCoder: 和 initWithCoder:方法,NSCoding協(xié)議中僅有的組成成員。第一個允許對象編譯它的實例變量,第二個允許一個對象初始化它自身的解碼實例變量。
NSObject類聲明了一些與對象編碼相關(guān)的其它方法,有:classForCoder,replacementObjectForCoder:,和awakeAfterUsingCoder。
Message forwarding(消息轉(zhuǎn)發(fā)). forwardInvocation:允許一個對象把消息轉(zhuǎn)發(fā)給另一個對象。
Message dispatch(消息配送). 一個以performSelector...為開頭的方法允許你配送消息(message)直到指定的延遲后,并且可以從二級線程((synchronously or asynchronously)同步或者不同步地)配送消息到主線程。
NSObject擁有許多其它的方法,比如版本和傳遞的類方法(class methods for versioning and posing)(之后將為你展示如何將一個類本身編譯為另一個類)。它既包括了方法讓你訪問編譯器數(shù)據(jù)結(jié)構(gòu)的類,比如selector方法和函數(shù)指針形式的方法實現(xiàn)。