12-類的本質(zhì)胜卤、類的啟動(dòng)過程(load, initialize)、SEL類型

類的本質(zhì)


  • 本質(zhì)
    • 類其實(shí)也是一個(gè) 對象, 這個(gè)對象會(huì)在這個(gè)類第一次被使用的時(shí)候創(chuàng)建, 一個(gè)類再內(nèi)存中只有一份類對象
    • 只要有了類對象, 將來就可以通過類對象來創(chuàng)建實(shí)例對象
    • 實(shí)例對象中有一個(gè)isa指針, 指向創(chuàng)建自己的類對象
    • 類對象中保存了當(dāng)前對象所有的對象方法, 當(dāng)給一個(gè)實(shí)例對象發(fā)送消息的時(shí)候, 會(huì)根據(jù)實(shí)例對象中的isa指針去對應(yīng)的類對象中查找
  • 如何獲取類對象: [實(shí)例對象 class]/ [類名 class];
  • 類對象的應(yīng)用場景:
    • 1用于創(chuàng)建實(shí)例對象
    • 2用于調(diào)用類方法

類的啟動(dòng)過程


  • load方法:
    • 只要程序啟動(dòng)就會(huì)將所有類的代碼加載到內(nèi)存中, 放到代碼區(qū)
    • load方法會(huì)在當(dāng)前類被 加載到內(nèi)存 的時(shí)候調(diào)用, 有且僅會(huì) 調(diào)用一次
    • 如果存在繼承關(guān)系, 會(huì) 先調(diào)用父類的load方法, 再調(diào)用子類的load方法
  • initialize方法:
    • 當(dāng)前類第一次被使用的時(shí)候就會(huì)調(diào)用(創(chuàng)建類對象的時(shí)候)
    • initialize方法在整個(gè)程序的運(yùn)行過程中只會(huì)被 調(diào)用一次, 無論使用多少次這個(gè)類都只會(huì)調(diào)用一次
    • initialize用于對某一個(gè)類進(jìn)行 一次性的初始化
    • initializeload一樣, 如果存在繼承關(guān)系, 會(huì) 先調(diào)用父類的initialize, 再調(diào)用子類的initialize

SEL類型


三種用法

    1. 配合對象/類來 檢查 對象/類中有沒有實(shí)現(xiàn)某一個(gè)方法
SEL sel = @selector(setAge:);
Person *p = [Person new];
// 判斷p對象中有沒有實(shí)現(xiàn)-號(hào)開頭的setAge:方法
// 如果P對象實(shí)現(xiàn)了setAge:方法那么就會(huì)返回YES
// 如果P對象沒有實(shí)現(xiàn)setAge:方法那么就會(huì)返回NO
BOOL flag = [p respondsToSelector:sel];
NSLog(@"flag = %i", flag);
  • 2.配合對象/類來 調(diào)用某一個(gè)SEL方法
SEL sel = @selector(demo);
Person *p = [Person new];
// 調(diào)用p對象中sel類型對應(yīng)的方法
[p performSelector:sel];
    
SEL sel1 = @selector(signalWithNumber:);
// withObject: 需要傳遞的參數(shù)
// 注意: 如果通過performSelector調(diào)用有參數(shù)的方法, 那么參數(shù)必須是對象類型,
// 也就是說方法的形參必須接受的是一個(gè)對象, 因?yàn)閣ithObject只能傳遞一個(gè)對象
[p performSelector:sel1 withObject:@"13838383438"];
    
SEL sel2 = @selector(setAge:);
[p performSelector:sel2 withObject:@(5)];
NSLog(@"age = %i", p.age);
    
// 注意:performSelector最多只能傳遞2個(gè)參數(shù)
SEL sel3 = @selector(sendMessageWithNumber:andContent:);
[p performSelector:sel3 withObject:@"138383438" withObject:@"abcdefg"];
  • 3.配合對象 將SEL類型作為方法的形參
Car *c = [Car new];
SEL sel = @selector(run);
    
Person *p = [Person new];
[p makeObject:c andSel:sel];// 調(diào)用傳入對象的指定方法, 此處是c的run方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末综膀,一起剝皮案震驚了整個(gè)濱河市澳迫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剧劝,老刑警劉巖橄登,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異讥此,居然都是意外死亡拢锹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門萄喳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卒稳,“玉大人,你說我怎么就攤上這事他巨〕淇樱” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵染突,是天一觀的道長捻爷。 經(jīng)常有香客問我,道長份企,這世上最難降的妖魔是什么也榄? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮司志,結(jié)果婚禮上甜紫,老公的妹妹穿的比我還像新娘降宅。我一直安慰自己,他們只是感情好囚霸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布钉鸯。 她就那樣靜靜地躺著,像睡著了一般邮辽。 火紅的嫁衣襯著肌膚如雪唠雕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天吨述,我揣著相機(jī)與錄音岩睁,去河邊找鬼。 笑死揣云,一個(gè)胖子當(dāng)著我的面吹牛捕儒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邓夕,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼刘莹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了焚刚?” 一聲冷哼從身側(cè)響起点弯,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矿咕,沒想到半個(gè)月后抢肛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碳柱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年捡絮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莲镣。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡福稳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瑞侮,到底是詐尸還是另有隱情的圆,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布区岗,位于F島的核電站略板,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏慈缔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一种玛、第九天 我趴在偏房一處隱蔽的房頂上張望藐鹤。 院中可真熱鬧瓤檐,春花似錦、人聲如沸娱节。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肄满。三九已至谴古,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稠歉,已是汗流浹背掰担。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怒炸,地道東北人带饱。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像阅羹,于是被迫代替她去往敵國和親勺疼。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉捏鱼,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,682評論 0 9
  • 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的...
    西木閱讀 30,544評論 33 466
  • 一执庐、Runtime簡介 Runtime簡稱運(yùn)行時(shí)。OC就是運(yùn)行時(shí)機(jī)制导梆,也就是在運(yùn)行時(shí)候的一些機(jī)制耕肩,其中最主要的是消...
    林安530閱讀 1,060評論 0 2
  • Objective-C中有兩個(gè)NSObject,一個(gè)是NSObject類问潭,另一個(gè)是NSObject協(xié)議猿诸。而其中NS...
    ScaryMonsterLyn閱讀 762評論 0 2
  • 文 | KOI 總有一首歌詞梳虽,刻在你的心里 總有一句歌詞,是唱給你聽的 我是KOI灾茁,無所事事窜觉,正在聽歌 有沒有你心...
    田優(yōu)秀閱讀 395評論 5 5