再各種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é)議和類定義了很多內(nèi)省方法,用于查詢運(yùn)行時(shí)信息,以便根據(jù)對(duì)象的特征進(jìn)行識(shí)別。
明智地使用內(nèi)省可以使面向?qū)ο蟮某绦蚋痈咝Ш蛷?qiáng)壯。它有助于避免錯(cuò)誤地進(jìn)行消息派發(fā)、錯(cuò)誤地假設(shè)對(duì)象相等、以及類似的問(wèn)題。
下面的部分將介紹如何在代碼中有效地使用NSObject的內(nèi)省方法。
1、isKindOfClass:Class
檢查對(duì)象是否是那個(gè)類或者其繼承類實(shí)例化的對(duì)象
2、isMemberOfClass:Class
檢查對(duì)象是否是那個(gè)類但不包括繼承類而實(shí)例化的對(duì)象
3、respondToSelector:selector
檢查對(duì)象是否包含這個(gè)方法
4、conformsToProtocol:protocol
檢查對(duì)象是否符合協(xié)議,是否實(shí)現(xiàn)了協(xié)議中所有的必選方法。
簡(jiǎn)單理解就是運(yùn)行時(shí)機(jī)制的特點(diǎn)?。?!
2、引用計(jì)數(shù)
親自試驗(yàn)了一下如果是自己建立的類引用計(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。