iOS開發過程中使用一些常用的宏可以提高開發效率,提高代碼的重用性;將這些宏放到一個頭文件裏然後再放到工程中的-Prefix.pch文件中(或者直接放到-Prefix.pch中)直接可以使用,灰常方便。
本文整理自http://www.cocoachina.com/applenews/devnews/2013/0328/5907.html 。
做了一些分類和註釋,可以根據自己習慣再添加或者刪除或者修改這些宏進行使用。
- //
- // MacroDefinition.h
- // MacroDefinitionDemo
- //
- // Created by 新風作浪 on 13-6-9.
- // Copyright (c) 2013年 SpinningSphere Labs. All rights reserved.
- //
- #ifndef MacroDefinition_h
- #define MacroDefinition_h
- //-------------------獲取設備大小-------------------------
- //NavBar高度
- #define NavigationBar_HEIGHT 44
- //獲取屏幕 寬度、高度
- #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
- #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
- //-------------------獲取設備大小-------------------------
- //-------------------打印日誌-------------------------
- //DEBUG 模式下打印日誌,當前行
- #ifdef DEBUG
- # define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
- #else
- # define DLog(...)
- #endif
- //重寫NSLog,Debug模式下打印日誌和當前行數
- #if DEBUG
- #define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d content:%s\n", __FUNCTION__, __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
- #else
- #define NSLog(FORMAT, ...) nil
- #endif
- //DEBUG 模式下打印日誌,當前行 並彈出一個警告
- #ifdef DEBUG
- # define ULog(fmt, ...) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }
- #else
- # define ULog(...)
- #endif
- #define ITTDEBUG
- #define ITTLOGLEVEL_INFO 10
- #define ITTLOGLEVEL_WARNING 3
- #define ITTLOGLEVEL_ERROR 1
- #ifndef ITTMAXLOGLEVEL
- #ifdef DEBUG
- #define ITTMAXLOGLEVEL ITTLOGLEVEL_INFO
- #else
- #define ITTMAXLOGLEVEL ITTLOGLEVEL_ERROR
- #endif
- #endif
- // The general purpose logger. This ignores logging levels.
- #ifdef ITTDEBUG
- #define ITTDPRINT(xx, ...) NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
- #else
- #define ITTDPRINT(xx, ...) ((void)0)
- #endif
- // Prints the current method's name.
- #define ITTDPRINTMETHODNAME() ITTDPRINT(@"%s", __PRETTY_FUNCTION__)
- // Log-level based logging macros.
- #if ITTLOGLEVEL_ERROR <= ITTMAXLOGLEVEL
- #define ITTDERROR(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__)
- #else
- #define ITTDERROR(xx, ...) ((void)0)
- #endif
- #if ITTLOGLEVEL_WARNING <= ITTMAXLOGLEVEL
- #define ITTDWARNING(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__)
- #else
- #define ITTDWARNING(xx, ...) ((void)0)
- #endif
- #if ITTLOGLEVEL_INFO <= ITTMAXLOGLEVEL
- #define ITTDINFO(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__)
- #else
- #define ITTDINFO(xx, ...) ((void)0)
- #endif
- #ifdef ITTDEBUG
- #define ITTDCONDITIONLOG(condition, xx, ...) { if ((condition)) { \
- ITTDPRINT(xx, ##__VA_ARGS__); \
- } \
- } ((void)0)
- #else
- #define ITTDCONDITIONLOG(condition, xx, ...) ((void)0)
- #endif
- #define ITTAssert(condition, ...) \
- do { \
- if (!(condition)) { \
- [[NSAssertionHandler currentHandler] \
- handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \
- file:[NSString stringWithUTF8String:__FILE__] \
- lineNumber:__LINE__ \
- description:__VA_ARGS__]; \
- } \
- } while(0)
- //---------------------打印日誌--------------------------
- //----------------------系統----------------------------
- //獲取系統版本
- #define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]
- #define CurrentSystemVersion [[UIDevice currentDevice] systemVersion]
- //獲取當前語言
- #define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
- //判斷是否 Retina屏、設備是否%fhone 5、是否是iPad
- #define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
- #define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
- #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
- //判斷是真機還是模擬器
- #if TARGET_OS_IPHONE
- //iPhone Device
- #endif
- #if TARGET_IPHONE_SIMULATOR
- //iPhone Simulator
- #endif
- //檢查系統版本
- #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
- #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
- #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
- #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
- #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
- //----------------------系統----------------------------
- //----------------------內存----------------------------
- //使用ARC和不使用ARC
- #if __has_feature(objc_arc)
- //compiling with ARC
- #else
- // compiling without ARC
- #endif
- #pragma mark - common functions
- #define RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; }
- //釋放一個對象
- #define SAFE_DELETE(P) if(P) { [P release], P = nil; }
- #define SAFE_RELEASE(x) [x release];x=nil
- //----------------------內存----------------------------
- //----------------------圖片----------------------------
- //讀取本地圖片
- #define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:ext]]
- //定義UIImage對象
- #define IMAGE(A) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:A ofType:nil]]
- //定義UIImage對象
- #define ImageNamed(_pointer) [UIImage imageNamed:[UIUtil imageName:_pointer]]
- //建議使用前兩種宏定義,性能高於後者
- //----------------------圖片----------------------------
- //----------------------顏色類---------------------------
- // rgb顏色轉換(16進制->10進制)
- #define UIColorFromRGB(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]
- //帶有RGBA的顏色設置
- #define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
- // 獲取RGB顏色
- #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]
- #define RGB(r,g,b) RGBA(r,g,b,1.0f)
- //背景色
- #define BACKGROUND_COLOR [UIColor colorWithRed:242.0/255.0 green:236.0/255.0 blue:231.0/255.0 alpha:1.0]
- //清除背景色
- #define CLEARCOLOR [UIColor clearColor]
- #pragma mark - color functions
- #define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]
- #define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
- //----------------------顏色類--------------------------
- //----------------------其他----------------------------
- //方正黑體簡體字體定義
- #define FONT(F) [UIFont fontWithName:@"FZHTJW--GB1-0" size:F]
- //定義一個API
- #define APIURL @"http://xxxxx/"
- //登陸API
- #define APILogin [APIURL stringByAppendingString:@"Login"]
- //設置View的tag屬性
- #define VIEWWITHTAG(_OBJECT, _TAG) [_OBJECT viewWithTag : _TAG]
- //程序的本地化,引用國際化的文件
- #define MyLocal(x, ...) NSLocalizedString(x, nil)
- //G-C-D
- #define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
- #define MAIN(block) dispatch_async(dispatch_get_main_queue(),block)
- //NSUserDefaults 實例化
- #define USER_DEFAULT [NSUserDefaults standardUserDefaults]
- //由角度獲取弧度 有弧度獲取角度
- #define degreesToRadian(x) (M_PI * (x) / 180.0)
- #define radianToDegrees(radian) (radian*180.0)/(M_PI)
- //單例化一個類
- #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \
- \
- static classname *shared##classname = nil; \
- \
- + (classname *)shared##classname \
- { \
- @synchronized(self) \
- { \
- if (shared##classname == nil) \
- { \
- shared##classname = [[self alloc] init]; \
- } \
- } \
- \
- return shared##classname; \
- } \
- \
- + (id)allocWithZone:(NSZone *)zone \
- { \
- @synchronized(self) \
- { \
- if (shared##classname == nil) \
- { \
- shared##classname = [super allocWithZone:zone]; \
- return shared##classname; \
- } \
- } \
- \
- return nil; \
- } \
- \
- - (id)copyWithZone:(NSZone *)zone \
- { \
- return self; \
- }
- #endif
MacroDefinition.h 下載地址:https://github.com/XFZLDXF/Macro
CSDN下載:http://download.csdn.net/detail/duxinfeng2010/5555367