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

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

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

FOUNDATION_EXPORT, UIKIT_EXTERN

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

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

然后在.h文件中加上以下聲明, 就可以在導入該.h文件的類中訪問該常量。

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

如果要在未導入該.h文件的類中訪問這兩個常量, 則應該將上面的代碼放入該類的.m文件中。

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

使用如下:

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

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

如何在iOS中使用宏

define與FOUNDATION_EXPORT比較

NS_STRING_ENUM 和 NS_EXTENSIBLE_STRING_ENUM

這兩個個宏定義是用于為Objective-C橋接Swift所使用的,它的作用是在橋接到 Swift 中時可進行枚舉擴展,使用如下:

在.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)")

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

__VA_ARGS__

##就是個粘合劑,將前后兩部分粘合起來,也就是有“字符化”的意思。

而__VA_ARGS__在預編譯中會被實參列表取代, ...表示可變參列表。

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

 #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

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

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

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

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

廣告

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

商城網(wǎng)站建設