iOS开发中那些高效常用的宏
- #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
iOS开发中那些高效常用的宏的更多相关文章
- iOS开发中对于一些常用的相对路径(持续更新)
1.iOS开发的证书的描述文件放置地点 ~/Library/MobileDevice/Provisioning Profiles 2.$(SRCROOT)代表的是这个项目文件夹所在的位置 $(PR ...
- iOS开发中两个不错的宏定义
/** Synthsize a weak or strong reference. Example: @weakify(self) [self doSomething^{ @strongify(sel ...
- ios开发中字符串的常用功能总结
1.分割字符串 NSString * str1 = @"123/456"; NSArray * arr1 = [str1 componentsSeparatedByString:@ ...
- iOS开发中常用的数学函数
iOS开发中常用的数学函数 /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(,)); //result 9 NSLog(,)); //result 27 //开平方 ...
- iOS开发中调试小技巧
对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...
- iOS开发中你是否遇到这些经验问题
前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时 ...
- 深入理解 iOS 开发中的锁
来源:伯乐在线 - 夏天然后 链接:http://ios.jobbole.com/89474/ 点击 → 申请加入伯乐在线专栏作者 摘要 本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大 ...
- iOS开发中的MVC设计模式
我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开发是 ...
- iOS - 开发中调试小技巧
对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...
随机推荐
- 关于BIOS的一点东西
关于BIOS的一点东西 编辑删除转载2016-05-20 00:36:36 去把BIOS的每个单词意思都有道一遍就都明白了,BOOT是更改 启动顺序的(台式机一直按del键就会进入BIOS界面,用上下 ...
- C++全局变量在多个源代码文件中的使用
在比较大的项目中,如果需要使用全局变量,那么就需要注意一些全局变量声明.使用不当引起的问题了. 本篇文章主要内容有两个:普通全局变量.静态全局变量.全局常量. 1.普通全局变量:假设我们需要在多个不同 ...
- jQuery 关于 end() 方法的详细解释
<ul class="first"> <li class="foo">list item 1</li> <li> ...
- 输入任意IP,将IP转化为minion-IP格式(saltstack)
注1:10.102. 可以替换成其他的,或者手动输入. 注2:minion-可以替换为其他的,或者手动输入. 代码如下(python3): import re # list = [] list1 = ...
- ios--NSCalendar NSDateComponents
原文: ios时间那点事--NSCalendar NSDateComponents http://my.oschina.net/yongbin45/blog/156181 目录[-] iOS时间那点事 ...
- Python 的property的实现 .
描述符.就是 将某种特殊类型①的类的实例指派给另一个类的属性 ①只要实现一下三种方法的其中一个就是特殊类型. __get__(self,instance,owner) -用于访问属性,他返回属性的值. ...
- 又见蒙特卡洛——python模拟解决三门问题
三门问题很有意思,wiki用不同方法将原理讲的很透彻了,我跟喜欢其中这种理解方式:无论参赛者开始的选择如何,在被主持人问到是否更换时都选择更换.如果参赛者先选中山羊,换之后百分之百赢:如果参赛者先选中 ...
- php中数据库的操作
1.Mysql客户端介绍,命令行:这种方法不友好. 2.Mysql客户端介绍,Web形式的可视化界面(phpMyAdmin) 优点:只要有浏览器就可以操作数据库 缺点: a)创建数据库
- Android屏幕适配常识
屏幕适配的注意事项 1. AndroidManifest.xml设置 在中Menifest中添加子元素 android:anyDensity="true"时,应用程序安装在不同密度 ...
- swift系统学习第一章
第一节:变量,常量,类型推断,字符,字符串 //swift学习第一节 /* 变量 常量 类型推断 字符 字符串 */ import UIKit //变量 var str = "swift&q ...