iOS 常用巨集定義

2021-08-02 20:03:51 字數 4201 閱讀 5664

//

字串是否為空

#define kstringisempty(str) ([str iskindofclass:[nsnull class]] || str == nil || [str length] <

1? yes : no ) //

陣列是否為空

#define karrayisempty(array) (array == nil || [array iskindofclass:[nsnull class]] || array.count == 0)

//字典是否為空

#define kdictisempty(dic) (dic == nil || [dic iskindofclass:[nsnull class]] || dic.allkeys == 0)

//是否是空物件

#define kobjectisempty(_object) (_object == nil \

|| [_object iskindofclass:[nsnull class]] \

|| ([_object respondstoselector:@selector(

length

)] && [(nsdata *)_object

length

] ==

0) \

|| ([_object respondstoselector:@selector(count)] && [(nsarray *)_object count] == 0))

//獲取螢幕寬度與高度

#define kscreenwidth \

([[uiscreen mainscreen] respondstoselector:@selector(nativebounds)] ? [uiscreen mainscreen].nativebounds.size.width/[uiscreen mainscreen].nativescale : [uiscreen mainscreen].bounds.size.width)

#define kscreenheight \

([[uiscreen mainscreen] respondstoselector:@selector(nativebounds)] ? [uiscreen mainscreen].nativebounds.size.height/[uiscreen mainscreen].nativescale : [uiscreen mainscreen].bounds.size.height)

#define kscreensize \

([[uiscreen mainscreen] respondstoselector:@selector(nativebounds)] ? cgsizemake([uiscreen mainscreen].nativebounds.size.width/[uiscreen mainscreen].nativescale,[uiscreen mainscreen].nativebounds.size.height/[uiscreen mainscreen].nativescale) : [uiscreen mainscreen].bounds.size) //

一些縮寫

#define kuserdefaults       [nsuserdefaults standarduserdefaults]

#define knotificationcenter [nsnotificationcenter defaultcenter]

版本號

//系統版本號

#define ksystemversion [[uidevice currentdevice] systemversion] //

獲取當前語言

#define kcurrentlanguage ([[nslocale preferredlanguages] objectatindex:0])

//判斷是否為

iphone

#define kisiphone (ui_user_inte***ce_idiom() == uiuserinte***ceidiomphone) //

判斷是否為

ipad

#define kisipad (ui_user_inte***ce_idiom() == uiuserinte***ceidiompad) //

獲取沙盒

document路徑

#define kdocumentpath [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) firstobject] //

獲取沙盒

temp路徑

#define ktemppath nstemporarydirectory() //

獲取沙盒

cache路徑

#define kcachepath [nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask, yes) firstobject] //

判斷是真機還是模擬器

#if target_os_iphone //

真機 #endif

#if target_iphone_simulator //

模擬器

#endif //

開發的時候列印,但是發布的時候不列印的

nslog

#ifdef debug

#define nslog(...) nslog(@"%s 第%d

行\n %@\n\n",__func__,__line__,[nsstring stringwithformat:__va_args__])

#else

#define nslog(...)

#endif //

顏色 #define krgbcolor(r, g, b)     [uicolor colorwithred:(r)/

255.0

green:(g)/

255.0

blue:(b)/

255.0

alpha:

1.0]

#define krgbacolor(r, g, b, a) [uicolor colorwithred:(r)/

255.0

green:(r)/

255.0

blue:(r)/

255.0

alpha:a]

#define krandomcolor           krgbcolor(arc4random_uniform(

256),arc4random_uniform(

256),arc4random_uniform(

256))

#define kcolorwithhex(rgbvalue) \

[uicolor colorwithred:((float)((rgbvalue &

0xff0000) >>

16)) /

255.0\

green:((float)((rgbvalue &

0xff00) >>

8)) /

255.0\

blue:((float)(rgbvalue &

0xff)) /

255.0

alpha:

1.0] //

弱引用/

強引用

#define kweakself(type)   __weak typeof(type) weak##type = type;

#define kstrongself(type) __strong typeof(type) type = weak##type; //

由角度轉換弧度

#define kdegreestoradian(x)      (m_pi * (x) /

180.0)

//由弧度轉換角度

#define kradiantodegrees(radian) (radian *

180.0

) / (m_pi) //

獲取一段時間間隔

#define kstarttime cfabsolutetime start = cfabsolutetimegetcurrent();

#define kendtime   nslog(@"time: %f", cfabsolutetimegetcurrent() - start)

iOS常用巨集定義

獲取當前螢幕的寬高 define kscreenw uiscreen mainscreen bounds size.width define kscreenh uiscreen mainscreen bounds size.height 判斷當前系統版本 define ios9 uidevice c...

ios 巨集定義

這個不是ios 應該算是c裡面的 巨集定義巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯。1 編輯本段引數 不帶引數 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define識別符號字串 其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預...

iOS開發中的常用巨集定義

在ios開發的過程中合理的使用巨集定義能夠極大提高編碼的速度,下面是一些常用的巨集定義,部分內容來自網際網路 除錯狀態,開啟log功能 ifdef debug define gllog nslog va args define gllogmethod nslog s func else 發布狀態,關...