如何在iOS中使用宏-創(chuàng)新互聯(lián)

如何在iOS中使用宏?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營(yíng)銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營(yíng)銷需求!創(chuàng)新互聯(lián)具備承接各種類型的成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)項(xiàng)目的能力。經(jīng)過(guò)十余年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評(píng)。

FOUNDATION_EXPORT, UIKIT_EXTERN

該宏的作用類似于extern,使用方法也與extern類似,在.m文件中,定義如下

 NSString *const kFoundationExportString = @"Hello World";
 
 NSString *const kExternString = @"Hello World";

然后在.h文件中加上以下聲明, 就可以在導(dǎo)入該.h文件的類中訪問(wèn)該常量。

 FOUNDATION_EXPORT NSString *const kFoundationExportString;
 
 extern NSString *const kExternString;

如果要在未導(dǎo)入該.h文件的類中訪問(wèn)這兩個(gè)常量, 則應(yīng)該將上面的代碼放入該類的.m文件中。

UIKIT_EXTERN相比extern只是增加了兼容性,使用方法一樣。

使用如下:

 NSString *str = @"Hello World";
 if (str == kConstantString) {
 NSLog(@"equal");
 }

使用FOUNDATION_EXPORT聲明的字符串常量比較的是指針的地址, 而#define宏定義的常量字符串只能使用isEqualToString來(lái)比較, 前者更加高效。

如何在iOS中使用宏

define與FOUNDATION_EXPORT比較

NS_STRING_ENUM 和 NS_EXTENSIBLE_STRING_ENUM

這兩個(gè)個(gè)宏定義是用于為Objective-C橋接Swift所使用的,它的作用是在橋接到 Swift 中時(shí)可進(jìn)行枚舉擴(kuò)展,使用如下:

在.h文件中聲明

 typedef NSString *ViewControllerKey NS_STRING_ENUM;
 FOUNDATION_EXPORT ViewControllerKey const ViewControllerKeyTitle;
 FOUNDATION_EXPORT ViewControllerKey const ViewControllerKeySubtitle;
 FOUNDATION_EXPORT ViewControllerKey const ViewControllerKeySummary;

.m文件中定義:

 ViewControllerKey const ViewControllerKeyTitle = @"title";
 ViewControllerKey const ViewControllerKeySubtitle = @"subtitle";
 ViewControllerKey const ViewControllerKeySummary = @"summary";

在swift文件中使用如下:

 print("\(ViewControllerKey.title) \(ViewControllerKey.subtitle) \(ViewControllerKey.summary)")

這兩個(gè)宏定義的區(qū)別在于,NS_STRING_ENUM是確定的, NS_EXTENSIBLE_STRING_ENUM則是可擴(kuò)展的,還可以在在swift中進(jìn)行擴(kuò)展。

__VA_ARGS__

##就是個(gè)粘合劑,將前后兩部分粘合起來(lái),也就是有“字符化”的意思。

而__VA_ARGS__在預(yù)編譯中會(huì)被實(shí)參列表取代, ...表示可變參列表。

##__VA_ARGS__ 宏前面加上##的作用在于,當(dāng)可變參數(shù)的個(gè)數(shù)為0時(shí),這里的##起到把前面多余的,去掉的作用,否則會(huì)編譯出錯(cuò)

 #define BLOCK_EXEC(block, ...) if (block) { block(__VA_ARGS__); };

 #ifdef DEBUG
 #define LogInfo( s, ... ) NSLog( @"[LogInfo]<%@:(%d)> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
 #else
 #define LogInfo( s, ... )
 #endif

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)建站的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站bm7419.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、建站服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享標(biāo)題:如何在iOS中使用宏-創(chuàng)新互聯(lián)
文章地址:http://bm7419.com/article10/djhego.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)定制開發(fā)、網(wǎng)站導(dǎo)航云服務(wù)器、搜索引擎優(yōu)化、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)