//
// 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) >>
)/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
转自:http://blog.csdn.net/duxinfeng2010/article/details/9067947
分享到:
相关推荐
以下是一些iOS开发中的高效常用宏及其详细说明: 1. **Prefix.pch文件**: 在iOS项目中,`Prefix.pch`文件是预编译头文件,它包含的宏定义会在每个源文件被编译之前先被引入。这样可以确保全局使用的宏定义、类别...
以下是一些iOS开发中常用宏定义的知识点: 1. **预处理器宏**:在Objective-C中,`#define`关键字用于创建预处理器宏。它们在编译时被替换为指定的文本,可以用来定义常量、简写复杂表达式或实现条件编译。 2. **...
在iOS开发中,框架(Framework)是至关重要的组成部分,它包含了一组相关的库、资源以及接口定义,方便开发者快速构建应用程序。"iOS常用宏定义framework" 提供了一系列预定义的宏和常用类别方法,旨在提高开发效率...
在iOS开发中,工具类是开发者常常依赖的代码模块,它们封装了常见任务,使得代码更简洁、可读性更强。这个压缩包“iOS开发工具类汇总”显然提供了一组实用的宏定义,旨在简化iOS应用程序的开发过程,提高开发效率。...
以下是对iOS中常用宏定义的详细总结: 1. **常量宏**: 常量宏用于定义全局常量,避免了多次计算和内存分配。例如,使用`#define`定义一个PI常量: ```c #define PI 3.14159265 ``` 在代码中直接使用PI即可,...
iOS开发工具类,包含常用功能,为方便使用,特为常用功能封装并且使用宏定义方式运用。在做开发时候能用少点代码就用少点,封装起来的工具类更好用,体积小,使用方便,使开发高效快捷。工具类不定期更新,请关注...
在iOS开发中,我们常常会使用到第三方库。推荐使用CocoaPods或Carthage进行依赖管理,它们能帮助我们自动下载、链接和更新库,简化项目结构。在Podfile或Cartfile中指定所需库,执行安装命令即可。 五、MVVM(Model...
在iOS开发过程中,Xcode是不可或缺的工具,它集成了代码编辑、编译、调试以及模拟器等功能,为开发者提供了高效的工作环境。本资料“聪明的iOS开发者的Xcode使用技巧”聚焦于提升开发效率和优化开发流程,共计15页...
在iOS开发中,可以创建自定义工具类(如CommonUtils),将常用的函数或者功能模块化,减少代码冗余,提高代码复用性。 - 例如,CommonUtils可以包含字符串处理、日期格式化、网络请求、数据存储等常用功能,每个...
Objective-C中有一些与C语言不同的数据类型,这些类型在iOS开发中非常常见。 ##### 1. `-id` 类型 - **定义**:`-id` 是一种特殊的指针类型,它可以指向任何Objective-C的对象。 - **用途**:在Objective-C中,...
在本节课程中,我们深入探讨了iOS开发中的几个核心概念和技术,特别是针对Foundation框架内的几个关键类进行了详细的讲解。这包括`NSArray`、`NSDictionary`、`NSSet`以及它们的可变版本——`NSMutableArray`、`...
在iOS开发中,项目文件的管理和MVC(Model-View-Controller)架构的优化对于提高应用性能和代码可维护性至关重要。本文将深入探讨这些主题,以帮助开发者更好地理解和优化他们的iOS项目。 首先,我们来看看常见的...
QMUI iOS是一个致力于提高项目UI开发效率的解决方案,其设计目的是用于辅助快速构建一个本身基本设计还原效果的iOS项目,同时利用自身提供的丰富控件和兼容处理,让开发者能专注不管是新项目的创造,还是已有项目的...
在iOS环境中,C++开发LRUCache(最近最少使用)缓存功能是一项常见的任务,尤其在性能优化和内存管理方面。LRU算法是一种常用的页面替换策略,它将最近最少使用的数据优先淘汰,以保证内存的有效利用。在Xcode中,...
提到的"宏定义宽高等等",在iOS开发中,宏定义通常是用预处理器指令`#define`来实现,用于简化代码并提高可读性。例如,可以定义屏幕宽度和高度的宏,以便在布局时使用: ```swift #define SCREEN_WIDTH [UIScreen ...
### IOS面试题2018总结188题知识点概览...以上内容涵盖了 iOS 开发面试中可能遇到的核心知识点,包括但不限于语言特性、框架使用、设计模式以及系统架构等方面。掌握这些知识点对于成为一名合格的 iOS 开发者至关重要。
总结一下,本文详细介绍了`FOUNDATION_EXPORT`、`UIKIT_EXTERN`、`NS_STRING_ENUM`、`NS_EXTENSIBLE_STRING_ENUM`以及`__VA_ARGS__`和`##`等宏的用法,这些都是iOS开发中常用且重要的宏定义。理解和正确使用这些宏...