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

簡單談?wù)刢/c++中#import、#include和@class的區(qū)別

 更新時(shí)間:2018年01月05日 09:15:54   作者:Mr.Lin  
對于#import,我想做過iOS開發(fā)的人應(yīng)該都不陌生。在開發(fā)過程中,當(dāng)我們需要聲明某一個(gè)類時(shí),都需要去引用。而#imclude的話,在我們學(xué)習(xí)C時(shí)就已經(jīng)知道了,他的作用也是引用聲明的意思。在表面上他們的作用似乎都是一樣的。但是在具體功能實(shí)現(xiàn)方式上,還是有著很大的區(qū)別。

1. 一般來說,導(dǎo)入objective c的頭文件時(shí)用#import,包含c/c++頭文件時(shí)用#include。

2. #import 確定一個(gè)文件只能被導(dǎo)入一次,這使你在遞歸包含中不會出現(xiàn)問題。<標(biāo)記>

所以,#import比起#include的好處就是不會引起交叉編譯。

#import && #class:

1. import會包含這個(gè)類的所有信息,包括實(shí)體變量和方法(.h文件中),而@class只是告訴編譯器,其后面聲明的名稱是類的名稱,至于這些類是如何定義的,后面會再告訴你。

2. 在頭文件中, 一般只需要知道被引用的類的名稱就可以了。 不需要知道其內(nèi)部的實(shí)體變量和方法,所以在頭文件中一般使用@class來聲明這個(gè)名稱是類的名稱。 而在實(shí)現(xiàn)類里面,因?yàn)闀玫竭@個(gè)引用類的內(nèi)部的實(shí)體變量和方法,所以需要使用#import來包含這個(gè)被引用類的頭文件。

    備注:#import 就是把被引用類的頭文件走一遍,即把.h文件里的變量和方法包含進(jìn)來一次,且僅一次,而@class不用,所以后者編譯效率更高。

3. 在編譯效率方面考慮,如果你有100個(gè)頭文件都#import了同一個(gè)頭文件,或者這些文件是依次引用的,如A–>B, B–>C, C–>D這樣的引用關(guān)系。當(dāng)最開始的那個(gè)頭文件有變化的話,后面所有引用它的類都需要重新編譯,如果你的類有很多的話,這將耗費(fèi)大量的時(shí)間。而是用@class則不會。

4. 如果有循環(huán)依賴關(guān)系,如:A–>B, B–>A這樣的相互依賴關(guān)系,如果使用#import來相互包含,那么就會出現(xiàn)編譯錯(cuò)誤,如果使用@class在兩個(gè)類的頭文件中相互聲明,則不會有編譯錯(cuò)誤出現(xiàn)。

    備注:實(shí)踐證明,A,B相互#import不會出現(xiàn)編譯錯(cuò)誤。因?yàn)?lt;標(biāo)記>處已經(jīng)說明#import時(shí)文件只被導(dǎo)入一次,所以此條不成立。

總結(jié):

    1. 如果不是c/c++,盡量用#import。

    2. 能在實(shí)現(xiàn)文件中#import,就不在頭文件中#import。

    3. 能在頭文件中@class+實(shí)現(xiàn)文件中#import,就不在頭文件中#import。

相關(guān)文章

  • ios 11和iphone x的相關(guān)適配問題及解決方法

    ios 11和iphone x的相關(guān)適配問題及解決方法

    這篇文章主要介紹了ios 11和iphone x的相關(guān)適配,文中給大家提到了在ios 11中,tableView會莫名偏移問題的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-11-11
  • iOS開發(fā)之tableView cell的展開收回功能實(shí)現(xiàn)代碼

    iOS開發(fā)之tableView cell的展開收回功能實(shí)現(xiàn)代碼

    本文介紹了iOS開發(fā)之tableView cell的展開收回功能實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • iOS的音頻文件的格式轉(zhuǎn)換示例

    iOS的音頻文件的格式轉(zhuǎn)換示例

    這篇文章主要介紹了iOS的音頻文件的格式轉(zhuǎn)換示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • IOS Cache設(shè)計(jì)詳細(xì)介紹及簡單示例

    IOS Cache設(shè)計(jì)詳細(xì)介紹及簡單示例

    這篇文章主要介紹了IOS Cache設(shè)計(jì)詳細(xì)介紹及簡單示例的相關(guān)資料,Cache的目的是為了追求更高的速度體驗(yàn),Cache的源頭是兩種數(shù)據(jù)讀取方式在成本和性能上的差異,需要的朋友可以參考下
    2017-01-01
  • iOS App開發(fā)中用CGContextRef繪制基本圖形的基本示例

    iOS App開發(fā)中用CGContextRef繪制基本圖形的基本示例

    這篇文章主要介紹了iOS App開發(fā)中用CGContextRef繪制基本圖形的基本示例,CGContextRef同時(shí)可以進(jìn)行圖形顏色的填充以及文字的書寫,需要的朋友可以參考下
    2016-05-05
  • iOS應(yīng)用開發(fā)中的文字選中操作控件UITextView用法講解

    iOS應(yīng)用開發(fā)中的文字選中操作控件UITextView用法講解

    這篇文章主要介紹了iOS應(yīng)用開發(fā)中的文字選中操作控件UITextView用法講解,代碼基于傳統(tǒng)的Objective-C語言,需要的朋友可以參考下
    2016-02-02
  • IOS 開發(fā)之讀取addressbook的實(shí)現(xiàn)實(shí)例

    IOS 開發(fā)之讀取addressbook的實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了IOS 開發(fā)之讀取addressbook的實(shí)現(xiàn)實(shí)例的相關(guān)資料,希望通過本文大家能夠掌握這樣的內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • iOS中tableview 兩級cell的展開與收回的示例代碼

    iOS中tableview 兩級cell的展開與收回的示例代碼

    本篇文章主要介紹了iOS中tableview 兩級cell的展開與收回的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 詳解iOS中按鈕點(diǎn)擊事件處理方式

    詳解iOS中按鈕點(diǎn)擊事件處理方式

    在iOS開發(fā)中,時(shí)常會用到按鈕,通過按鈕的點(diǎn)擊來完成界面的跳轉(zhuǎn)等功能。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • iOS開發(fā)定時(shí)器的三種方法分享

    iOS開發(fā)定時(shí)器的三種方法分享

    相信在大家開發(fā)過程中,常常需要在某個(gè)時(shí)間后執(zhí)行某個(gè)方法,或者是按照某個(gè)周期一直執(zhí)行某個(gè)方法。在這個(gè)時(shí)候,我們就需要用到定時(shí)器。然而,在iOS中有很多方法完成以上的任務(wù),到底有多少種方法呢?下面就通過這篇文章來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-09-09

最新評論

凤山县| 娱乐| 霍林郭勒市| 玉林市| 科技| 边坝县| 大兴区| 东平县| 闽侯县| 东至县| 淄博市| 固镇县| 合江县| 阳朔县| 乡城县| 伊春市| 额敏县| 宁国市| 新丰县| 正安县| 厦门市| 象州县| 平乡县| 同心县| 睢宁县| 庆阳市| 建宁县| 沙坪坝区| 甘德县| 绵竹市| 涞源县| 镇巴县| 九龙县| 旬邑县| 石狮市| 日土县| 江口县| 九龙县| 古丈县| 夹江县| 都昌县|