国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

IOS 頭文件導(dǎo)入-@class注意事項(xiàng)總結(jié)

2020-07-26 02:49:00
字體:
供稿:網(wǎng)友

IOS 頭文件導(dǎo)入-@class注意事項(xiàng)總結(jié)

一,導(dǎo)入頭文件有兩種不同的方法:

使用引號(hào)或者使用尖括號(hào),例如,#import <Cocoa/Cocoa.h>和#import "Tire.h".帶尖括號(hào)的語句是用來導(dǎo)入系統(tǒng)頭文件的,而帶引號(hào)的語句則說明導(dǎo)入的是項(xiàng)目本地的頭文件,如果你看到的頭文件名是用尖括號(hào)括起來的,那么這個(gè)頭文件對(duì)你的項(xiàng)目來說是只讀的,因?yàn)樗鼘儆谙到y(tǒng)。如果頭文件名是被引號(hào)括起來的,那么你(或參與這個(gè)項(xiàng)目的其他人)就可以編輯它。

二,Objective-C提供了一種方法能夠減少由依賴關(guān)系引起的重新編譯所帶來的影響。

依賴關(guān)系問題的存在是因?yàn)镺bjective-C編譯器需要某些信息才能夠工作。有時(shí),編譯器需要知道類的全部信息,例如它的實(shí)例變量配置,它所繼承的所有類等。而有的時(shí)候,編譯器只需要知道類名即可,不需要了解它的整個(gè)含義。

     例如,對(duì)象復(fù)合后,這個(gè)復(fù)合使用指向?qū)ο蟮闹羔槨_@樣之所以能行得通,是因?yàn)樗蠴bjective-C對(duì)象都存放在動(dòng)態(tài)分配的內(nèi)存中。編譯器只需要知道這是一個(gè)類就可以了。然后它就地發(fā)現(xiàn)這個(gè)實(shí)例變量是指針的大小,而這個(gè)指針的大小在整個(gè)程序中都不會(huì)改變。

    Objective-C引入了關(guān)鍵字@class來告訴編譯器:“這是一個(gè)類,所以,我只需要通過指針來引用它。”這樣編譯器就會(huì)“平靜”下來:它并不需要知道關(guān)于這個(gè)類的更多信息,只要了解它是通過指針來引用的即可。

    @class創(chuàng)建了一個(gè)前向引用。就是在告訴編譯器:“相信我,以后你會(huì)知道這個(gè)類到底是什么,但是現(xiàn)在,你只需要知道這些”,如果有循環(huán)依賴關(guān)系,@class也很有用。即A類使用B類,B類也使用A類。如果試圖通過#import語句讓這兩個(gè)類互相引用,那么最后就會(huì)出現(xiàn)編譯錯(cuò)誤。但是如果在A.h中使用@class B,在B.h中使用@class A,那么這兩個(gè)類就可以互相引用了。

三,有時(shí)候,我們在文件中導(dǎo)入了Engine.h而沒有導(dǎo)入<Cocoa/Cocoa.h>,這是為什么呢?

我們知道,Engine.h中已經(jīng)導(dǎo)入了<cocoa/Cocoa.h>,所以,不需要我們自己再導(dǎo)入一遍了。然而,如果你想在該文件里加上#import <Cocoa/Cocoa.h>,這是可以的,因?yàn)?import命令具有足夠的智能,它不會(huì)重復(fù)導(dǎo)入自己的文件。 

四,在學(xué)習(xí)過程中,我們認(rèn)識(shí)了跨文件依賴關(guān)系,在這種關(guān)系中,頭文件或源文件需要使用另一個(gè)頭文件中的信息。

文件之間互相重復(fù)的導(dǎo)入會(huì)增加編譯次數(shù),也會(huì)導(dǎo)致不必要的重復(fù)編譯。而巧妙地使用@class命令能夠減少編譯時(shí)間,@class告訴編譯器“相信我,你最終能夠了解這個(gè)名稱的類”,它可以減少不得不導(dǎo)入的頭文件數(shù)量。

 參考資料:《Objective-C基礎(chǔ)教程》

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 腾冲县| 天津市| 黄石市| 琼结县| 得荣县| 耿马| 辉县市| 宜宾市| 张家口市| 普安县| 卓资县| 湛江市| 若羌县| 萍乡市| 文登市| 阿尔山市| 青浦区| 开远市| 万山特区| 烟台市| 磐石市| 金昌市| 云南省| 江达县| 平江县| 加查县| 宿松县| 望都县| 荥阳市| 屯昌县| 瓮安县| 马山县| 恭城| 全南县| 忻城县| 普陀区| 龙川县| 西昌市| 东港市| 仪陇县| 威宁|