再各種APP刷題時(shí)的遇到的問(wèn)題截圖整理一下刺桃,留著備用
1划鸽、關(guān)于內(nèi)省方法的判斷
當(dāng)初打錯(cuò)是忘了啥是內(nèi)省方法了(introspection)方法了先Google一下啦
內(nèi)什扪(Introspection)是面向?qū)ο笳Z(yǔ)言和環(huán)境的一個(gè)強(qiáng)大特性虎韵,Objective-C和Cocoa在這個(gè)方面尤其的豐富雁佳。內(nèi)省是對(duì)象揭示自己作為一個(gè)運(yùn)行時(shí)對(duì)象的詳細(xì)信息的一種能力。這些詳細(xì)信息包括對(duì)象在繼承樹(shù)上的位置筋搏,對(duì)象是否遵循特定的協(xié)議仆百,以及是否可以響應(yīng)特定的消息。NSObject協(xié)議和類(lèi)定義了很多內(nèi)省方法拆又,用于查詢(xún)運(yùn)行時(shí)信息儒旬,以便根據(jù)對(duì)象的特征進(jìn)行識(shí)別栏账。
明智地使用內(nèi)省可以使面向?qū)ο蟮某绦蚋痈咝Ш蛷?qiáng)壯帖族。它有助于避免錯(cuò)誤地進(jìn)行消息派發(fā)、錯(cuò)誤地假設(shè)對(duì)象相等挡爵、以及類(lèi)似的問(wèn)題竖般。
下面的部分將介紹如何在代碼中有效地使用NSObject的內(nèi)省方法。
1茶鹃、isKindOfClass:Class
檢查對(duì)象是否是那個(gè)類(lèi)或者其繼承類(lèi)實(shí)例化的對(duì)象
2涣雕、isMemberOfClass:Class
檢查對(duì)象是否是那個(gè)類(lèi)但不包括繼承類(lèi)而實(shí)例化的對(duì)象
3艰亮、respondToSelector:selector
檢查對(duì)象是否包含這個(gè)方法
4、conformsToProtocol:protocol
檢查對(duì)象是否符合協(xié)議挣郭,是否實(shí)現(xiàn)了協(xié)議中所有的必選方法迄埃。
簡(jiǎn)單理解就是運(yùn)行時(shí)機(jī)制的特點(diǎn)!6艺稀侄非!
2、引用計(jì)數(shù)
親自試驗(yàn)了一下如果是自己建立的類(lèi)引用計(jì)數(shù)就是2 如果是NSString 則是一串?dāng)?shù)流译,后來(lái)參閱了博客大概的意思是NSString 和NSArray是經(jīng)過(guò)特殊優(yōu)化了逞怨。引用計(jì)數(shù)隨時(shí)有可能等于-1 還有NSString 不同長(zhǎng)度占用的區(qū)域也不一樣。
可以看到第一個(gè)為"常量"對(duì)象福澡,其retainCount方法的實(shí)現(xiàn)返回的是maxIntValue叠赦。