iOS常用的宏定义总结
- 字符串是否为空 
| 1 |   #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO ) | 
- 数组是否为空 
| 1 |   #define kArrayIsEmpty(array) (array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0) | 
- 字典是否为空 
| 1 |   #define kDictIsEmpty(dic) (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0) | 
- 是否是空对象 
| 1 2 3 4 |   #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)) | 
- 获取屏幕宽度与高度 ( " \ ":连接行标志,连接上下两行 ) 
| 1 2 3 4 5 6 |   #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) | 
- 一些常用的缩写 
| 1 2 3 4 5 |   #define kApplication        [UIApplication sharedApplication]  #define kKeyWindow          [UIApplication sharedApplication].keyWindow  #define kAppDelegate        [UIApplication sharedApplication].delegate  #define kUserDefaults      [NSUserDefaults standardUserDefaults]  #define kNotificationCenter [NSNotificationCenter defaultCenter] | 
- APP版本号 
| 1 |   #define kAppVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] | 
- 系统版本号 
| 1 |   #define kSystemVersion [[UIDevice currentDevice] systemVersion] | 
- 获取当前语言 
| 1 |   #define kCurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0]) | 
- 判断是否为iPhone 
| 1 |   #define kISiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) | 
- 判断是否为iPad 
| 1 |   #define kISiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) | 
- 获取沙盒Document路径 
| 1 |   #define kDocumentPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] | 
- 获取沙盒temp路径 
| 1 |   #define kTempPath NSTemporaryDirectory() | 
- 获取沙盒Cache路径 
| 1 |   #define kCachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject] | 
- 判断是真机还是模拟器 
| 1 2 3 4 5 6 |   #if TARGET_OS_IPHONE  //真机  #endif  #if TARGET_IPHONE_SIMULATOR  //模拟器  #endif | 
- 开发的时候打印,但是发布的时候不打印的NSLog 
| 1 2 3 4 5 |   #ifdef DEBUG  #define NSLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])  #else   #define NSLog(...)   #endif | 
- 颜色 
| 1 2 3 4 5 6 7 |   #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)/255.0,arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0)        //随机色生成  #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] | 
- 弱引用/强引用 
| 1 2 |   #define kWeakSelf(type)  __weak typeof(type) weak##type = type;  #define kStrongSelf(type) __strong typeof(type) type = weak##type; | 
- 由角度转换弧度 
| 1 |   #define kDegreesToRadian(x)      (M_PI * (x) / 180.0) | 
- 由弧度转换角度 
| 1 |   #define kRadianToDegrees(radian) (radian * 180.0) / (M_PI) | 
- 获取一段时间间隔 
| 1 2 |   #define kStartTime CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();  #define kEndTime  NSLog(@"Time: %f", CFAbsoluteTimeGetCurrent() - start) | 
- 宏(指令)定义 
| 1 2 | #ifndef MacroDefinition_h      // 如果没定义#define MacroDefinition_h | 
获取设备尺寸大小
- NavBar高度 
| 1 |   #define NavigationBar_HEIGHT 44 | 
- 获取屏幕 宽度、高度 
| 1 2 |   #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)  #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height) | 
打印日志
- DEBUG 模式下打印日志,当前行 
| 1 2 3 4 5 |   #ifdef DEBUG  #  define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);  #else  #  define DLog(...)  #endif | 
- 重写NSLog,Debug模式下打印日志和当前行数 
| 1 2 3 4 5 |   #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 模式下打印日志,当前行 并弹出一个警告 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #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. 
| 1 2 3 4 5 |   #ifdef ITTDEBUG  #define ITTDPRINT(xx, ...)  NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)  #else  #define ITTDPRINT(xx, ...)  ((void)0)  #endif | 
- 打印当前方法的名称 
| 1 |   #define ITTDPRINTMETHODNAME() ITTDPRINT(@"%s", __PRETTY_FUNCTION__) | 
- Log-level based logging macros. 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |   #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) | 
系统
- 是否iPad 
| 1 |  #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) | 
- 是否iPad 
| 1 |  #define someThing (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)? ipad: iphone | 
- 获取系统版本 
| 1 2 |   #define IOS_VERSION [[UIDevice currentDevice] systemVersion] floatValue]  #define CurrentSystemVersion [UIDevice currentDevice] systemVersion] | 
- 获取当前语言 
| 1 |   #define CurrentLanguage ([NSLocale preferredLanguages] objectAtIndex:0]) | 
- 判断是否 Retina屏、设备是否为iPone 5、是否是iPad 
| 1 2 3 |   #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) | 
- 判断设备的操做系统是不是ios7 
| 1 |   #define IOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0] | 
- 判断当前设备是不是iphone5 
| 1 |   #define kScreenIphone5    (([UIScreen mainScreen] bounds].size.height)>=568) | 
- 获取当前屏幕的高度 
| 1 |   #define kMainScreenHeight ([UIScreen mainScreen].applicationFrame.size.height) | 
- 获取当前屏幕的宽度 
| 1 |   #define kMainScreenWidth  ([UIScreen mainScreen].applicationFrame.size.width) | 
- 定义一个define函数 
| 1 |   #define TT_RELEASE_CF_SAFELY(__REF) { if (nil != (__REF)) { CFRelease(__REF); __REF = nil; } } | 
- 判断是真机还是模拟器 
| 1 2 3 4 |   #if TARGET_OS_IPHONE                           //iPhone Device  #endif    #if TARGET_IPHONE_SIMULATOR          //iPhone Simulator    #endif | 
- 检查系统版本 
| 1 2 3 4 5 |   #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 
| 1 2 3 4 5 |   #if __has_feature(objc_arc)  //compiling with ARC  #else  // compiling without ARC  #endif | 
| 1 2 |     #pragma mark - common functions    #define RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; } | 
- 释放一个对象 
| 1 2 |   #define SAFE_DELETE(P) if(P) { [P release], P = nil; }  #define SAFE_RELEASE(x) [x release];x=nil | 
图片
- 读取本地图片 
| 1 |   #define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[NSBundle mainBundle]pathForResource:file ofType:ext] | 
- 定义UIImage对象 
| 1 |   #define IMAGE(A) [UIImage imageWithContentsOfFile:[NSBundle mainBundle] pathForResource:A ofType:nil] | 
- 定义UIImage对象 
| 1 |   #define ImageNamed(_pointer) [UIImage imageNamed:[UIUtil imageName:_pointer] | 
//建议使用前两种宏定义,性能高于后者
颜色类
- rgb颜色转换(16进制->10进制) 
| 1 |  #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的颜色设置 
| 1 |   #define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A] | 
- 获取RGB颜色 
| 1 2 |  #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) | 
- 背景色 
| 1 |   #define BACKGROUND_COLOR [UIColor colorWithRed:242.0/255.0 green:236.0/255.0 blue:231.0/255.0 alpha:1.0] | 
- 清除背景色 
| 1 2 3 4 |   #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)] | 
其他
- 方正黑体简体字体定义 
| 1 |   #define FONT(F) [UIFont fontWithName:@"FZHTJW--GB1-0" size:F] | 
- 定义一个API 
| 1 |   #define APIURL                @"http://xxxxx/" | 
- 登录API 
| 1 |   #define APILogin              [APIURL stringByAppendingString:@"Login"] | 
- 设置View的tag属性 
| 1 |   #define VIEWWITHTAG(_OBJECT, _TAG)    [_OBJECT viewWithTag : _TAG] | 
- 程序的本地化,引用国际化的文件 
| 1 |   #define MyLocal(x, ...) NSLocalizedString(x, nil) | 
- G-C-D 
| 1 2 |   #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 实例化 
| 1 |   #define USER_DEFAULT [NSUserDefaults standardUserDefaults] | 
- 由角度获取弧度 
| 1 |   #define degreesToRadian(x) (M_PI * (x) / 180.0) | 
- 由弧度获取角度 
| 1 |   #define radianToDegrees(radian) (radian*180.0)/(M_PI) | 
- 单例化一个类 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |   #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]; \  } \  } \  \  returnshared##classname; \  } \  \  + (id)allocWithZone:(NSZone *)zone \  { \  @synchronized(self) \  { \  if(shared##classname == nil) \  { \  shared##classname = [super allocWithZone:zone]; \  returnshared##classname; \  } \  } \  \  returnnil; \  } \  \  - (id)copyWithZone:(NSZone *)zone \  { \  returnself; \  }  #endif | 
iOS常用的宏定义总结的更多相关文章
- iOS - 常用的宏定义
		1.处理NSLog事件(开发者模式打印,发布者模式不打印) 1 2 3 4 5 #ifdef DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,& ... 
- iOS常用define宏定义
		1. 屏幕宽高及常用尺寸 #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)#define SCREEN_HEIGHT ([U ... 
- IOS  常用的宏定义(#define)
		开发中经常用到的常量定义(随时更行): 与UIView相关 //获取View的frame属性 #define GetViewWidth(view) view.frame.size.width #def ... 
- iOS开发笔记--宏定义的黑魔法 - 宏菜鸟起飞手册
		宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在 ... 
- iOS开发之--宏定义与const的区别及使用方法
		宏定义的常见用法: 定义一段代码,或指定字符串抽成宏. const(常量): 当有字符串常量的时候,苹果推荐我们使用const,苹果经常把常用的字符串定义成const 宏定义与const的区别: 编译 ... 
- 在oc中一些常用的宏定义总结
		1.打印CGRect,Size,Point #define NSLogRect(rect) NSLog(@"%s x:%.4f, y:%.4f, w:%.4f, h:%.4f", ... 
- iOS技巧,宏定义
		aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnoAAAPCCAYAAADvRHWgAAAAAXNSR0IArs4c6QAAAZ1pVFh0WE1MOm 
- iOS:  常用的宏
		Github地址:https://github.com/XFZLDXF/Macro/blob/master/MacroDefinition.h // // MacroDefinition.h // M ... 
- iOS中常用的宏定义
		转自http://www.jianshu.com/p/be00c3f3cafd //字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[N ... 
随机推荐
- python中os模块中文帮助
			python中os模块中文帮助 python中os模块中文帮助文档文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8 ... 
- (1)麻省理工:计算机科学和 Python 编程导论
			本门课用的语言是python2.7,我的主要学习语言是C++11,所以不是特殊说明,则认为和C++中的是一样的(不管是语法还是表达式),当然,也有我不懂而错认为与C++一样的东西~ Week1 第一讲 ... 
- Python学习日记之中文支持
			解决中文输出错误 在开头添加 # -*- coding: utf-8 -*- 即可 
- 系统资源监控--windows
			前言: 系统资源监控一般监控系统的CPU,内存,磁盘和网络.系统分为windows和Linux.本篇主要记录windows. Windows的监控相对与Linux监控工具来说比较简单,更多的是查看wi ... 
- 2-2 列表推导同 filter  和 map  的比较
			列表推导同 filter 和 map 的比较 参考廖雪峰的文档: filter()函数:用于过滤序列. filter()接收一个函数和一个序列.把传入的函数依次作用于传入的序列的每个元素,根据返回值是 ... 
- GCC编译连接c++代码的四个阶段(Four stages of GCC compilation of C++ code)
			There are four stages for GCC to compile c/c++ applications: Preprocessing, Compilation proper, Asse ... 
- CAD把自定义实体,变成普通实体(com接口VB语言)
			主要用到函数说明: MxDrawXCustomEvent::MxDrawXCustomEntity::explode 把自定义实体,变成普通实体,详细说明如下: 参数 说明 LONGLONG lEnt ... 
- 08Webpage Form
			Webpage Form 表单(form)在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域:包含 ... 
- Vue如何tab切换高亮最简易方法
			以往我们实现tab切换高亮通常是循环遍历先把所有的字体颜色改变为默认样式,再点亮当前点击的选项,而我们在vue框架中实现tab切换高亮显示并不需要如此,只需要将当前点击选项的index传入给一个变量, ... 
- EasyUI Datagrid的简单使用
			此前同样写过EasyUI Datagrid的demo,好记性不如烂笔头,何况记性也不是那么好,赶紧记录一下.照搬上一篇EasyUI Tree的格式. 实现效果:获取数据库表的数据,在EasyUI Da ... 
