最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IOS self和super詳解實(shí)現(xiàn)原理及區(qū)別

 更新時(shí)間:2016年12月02日 16:23:58   投稿:lqh  
這篇文章主要介紹了iOS self和super詳解實(shí)現(xiàn)原理及區(qū)別的相關(guān)資料,這里不僅說明區(qū)別并介紹實(shí)現(xiàn)原理,具有參考價(jià)值,需要的朋友可以參考下

 self和super區(qū)別

1、self調(diào)用自己方法,super調(diào)用父類方法
2、self是類,super是預(yù)編譯指令
3、【self class】和【super class】輸出是一樣的

  self和super底層實(shí)現(xiàn)原理

1、當(dāng)使用 self 調(diào)用方法時(shí),會從當(dāng)前類的方法列表中開始找,如果沒有,就從父類中再找;而當(dāng)使用 super 時(shí),則從父類的方法列表中開始找,然后調(diào)用父類的這個(gè)方法。

2、當(dāng)使用 self 調(diào)用時(shí),會使用 objc_msgSend 函數(shù): id objc_msgSend(id theReceiver, SEL theSelector, ...)。第 一個(gè)參數(shù)是消息接收者,第二個(gè)參數(shù)是調(diào)用的具體類方法的 selector,后面是 selector 方法的可變參數(shù)。以 [self setName:] 為例,編譯器會替換成調(diào)用 objc_msgSend 的函數(shù)調(diào)用,其中 theReceiver 是 self,theSelector 是 @selector(setName:),這個(gè) selector 是從當(dāng)前 self 的 class 的方法列表開始找的 setName,當(dāng)找到后把對應(yīng)的 selector 傳遞過去。

3、當(dāng)使用 super 調(diào)用時(shí),會使用 objc_msgSendSuper 函數(shù):id objc_msgSendSuper(struct objc_super *super, SEL op, ...)第一個(gè)參數(shù)是個(gè)objc_super的結(jié)構(gòu)體,第二個(gè)參數(shù)還是類似上面的類方法的selector,

struct objc_super {  
   id receiver;  
   Class superClass; 
}; 

當(dāng)編譯器遇到 [super setName:] 時(shí),開始做這幾個(gè)事:

1)構(gòu) 建 objc_super 的結(jié)構(gòu)體,此時(shí)這個(gè)結(jié)構(gòu)體的第一個(gè)成員變量 receiver 就是 子類,和 self 相同。而第二個(gè)成員變量 superClass 就是指父類調(diào)用 objc_msgSendSuper 的方法,將這個(gè)結(jié)構(gòu)體和 setName 的 sel 傳遞過去。

2)函數(shù)里面在做的事情類似這樣:從 objc_super 結(jié)構(gòu)體指向的 superClass 的方法列表開始找 setName 的 selector,找到后再以 objc_super->receiver 去調(diào)用這個(gè) selector

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • IOS 中UITextField和UITextView中字符串為空和空格的解決辦法

    IOS 中UITextField和UITextView中字符串為空和空格的解決辦法

    這篇文章主要介紹了IOS 中UITextField和UITextView中字符串為空和空格的解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • iOS視頻中斷后臺音樂播放的處理方法

    iOS視頻中斷后臺音樂播放的處理方法

    這篇文章主要給大家介紹了關(guān)于iOS視頻中斷后臺音樂播放的處理方法,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • iOS實(shí)現(xiàn)H5支付(微信、支付寶)原生封裝

    iOS實(shí)現(xiàn)H5支付(微信、支付寶)原生封裝

    這篇文章主要介紹了iOS實(shí)現(xiàn)H5支付(微信、支付寶)原生封裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • xcode8 關(guān)閉控制臺不打印不信息的解決方法(圖文詳解)

    xcode8 關(guān)閉控制臺不打印不信息的解決方法(圖文詳解)

    這篇文章主要介紹了xcode8 關(guān)閉控制臺不打印信息的解決方法,本文圖文并茂給大家介紹的非常詳細(xì),感興趣的朋友參考下吧
    2016-10-10
  • iOS實(shí)現(xiàn)視頻和圖片的上傳思路

    iOS實(shí)現(xiàn)視頻和圖片的上傳思路

    這篇文章主要介紹了iOS實(shí)現(xiàn)視頻和圖片的上傳思路,本文分步驟給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • iOS11和iPhoneX適配的一些坑

    iOS11和iPhoneX適配的一些坑

    前陣子項(xiàng)目開發(fā)忙成狗,就一直沒做iOS11的適配,直到XcodeGM版發(fā)布后,我胸有成竹的在iPhoneX上跑起項(xiàng)目,整個(gè)人都涼透了...下面總結(jié)一下我遇到的坑,感興趣的朋友一起看看吧
    2017-09-09
  • IOS在SwiftUI中顯示模態(tài)視圖的實(shí)例代碼

    IOS在SwiftUI中顯示模態(tài)視圖的實(shí)例代碼

    這篇文章主要介紹了IOS在SwiftUI中顯示模態(tài)視圖的實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • iOS監(jiān)聽手機(jī)鎖屏狀態(tài)

    iOS監(jiān)聽手機(jī)鎖屏狀態(tài)

    iPhone的鎖屏監(jiān)測分為兩種方式監(jiān)聽,本文給大家介紹的非常詳細(xì),具體內(nèi)容詳情大家通過本文詳細(xì)了解下吧
    2017-05-05
  • iOS NSURLSessionDownloadTask實(shí)現(xiàn)文件斷點(diǎn)下載的方法

    iOS NSURLSessionDownloadTask實(shí)現(xiàn)文件斷點(diǎn)下載的方法

    本篇文章主要介紹了iOS NSURLSessionDownloadTask實(shí)現(xiàn)文件斷點(diǎn)下載的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • iOS通過攝像頭圖像識別技術(shù)分享

    iOS通過攝像頭圖像識別技術(shù)分享

    本篇文章給大家詳細(xì)講述了讓IOS開發(fā)中通過攝像頭進(jìn)行圖像識別的相關(guān)技術(shù),對此有興趣的朋友參考學(xué)習(xí)下吧。
    2018-02-02

最新評論

湘潭县| 庆云县| 河西区| 义马市| 木里| 乡宁县| 海林市| 玉屏| 罗定市| 东方市| 来凤县| 渑池县| 平遥县| 图木舒克市| 江油市| 宁化县| 固安县| 犍为县| 泗洪县| 三穗县| 克东县| 阳曲县| 灵川县| 吴堡县| 宾阳县| 台东市| 聊城市| 马山县| 庄浪县| 徐州市| 宣恩县| 罗江县| 宜州市| 临泽县| 泊头市| 宜丰县| 永靖县| 章丘市| 霍邱县| 汝阳县| 阜平县|