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.不同平台的 ...
随机推荐
- 关于SharePoint REST中的授权的研究
博客地址:http://blog.csdn.net/FoxDave 当我们开发SharePoint APP需要调用REST服务时,可以使用OAuth完成授权,也可以使用跨域库.以下是微软专家的一段注解 ...
- Python单元测试——unittest
unittest是python自带的一个模块 python344\Lib\unittest 官方参考文档: http://docs.python.org/2.7/library/unittest.ht ...
- 转:Java面试题集(1-50)
Java程序员面试题集(1-50) http://blog.csdn.net/jackfrued/article/details/17403101 一.Java基础部分 1.面向对象的特征有哪些方面? ...
- SQLSERVER数据库中批量导入数据的几种方法
第一:使用Select Into 语句 如果企业数据库都是采用SQL Server数据库的话,则可以利用select into语句实现数据的导入. select into语句的作用是把数据从另外一个数 ...
- color 的一些处理
1.UIImage转换成UIcolor cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@" ...
- META标签的NAME变量
META标签的NAME变量语法格式是: <META NAME=xxx CONTENT=xxxxxxxxxxxxxxxxxx> 其中xxx主要有下面几种参数: 1. Keywords(关键字 ...
- Sql Server REPLACE函数的使用;SQL中 patindex函数的用法
Sql Server REPLACE函数的使用 REPLACE用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式. 语法REPLACE ( ''string_replace1'' ...
- 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)
---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...
- python3爬虫再探之EXCEL
在爬取数据之后,数据的保存就成为一个新的问题,一般不太大的的数据存储到EXCEL就可以了.这里介绍一个python的第三方库——xlsxwriter. 这个库的安装就不介绍了,pip就可以,不用FQ. ...
- [Java Basics] Stack, Heap, Constructor, I/O, Immutable, ClassLoader
Good about Java: friendly syntax, memory management[GC can collect unreferenced memory resources], o ...