1:
#define DICT_SET_STRING(STRING_VALUE, KEY, DICT) \
{ STRING_VALUE != nil ? DICT[KEY] = STRING_VALUE : nil ; }#define DICT_SET_INT(INT_VALUE, KEY, DICT) \
{ DICT[KEY] = [@(INT_VALUE) stringValue] ; }
#define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;
#define TXJ_MAINSCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define TXJ_MAINSCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height
//#define TXJ_W_ADJUST TXJ_MAINSCREEN_WIDTH/568 横屏画的图
//widths = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)?30:20;
#define TXJ_W_ADJUST ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)?TXJ_MAINSCREEN_WIDTH/568:TXJ_MAINSCREEN_WIDTH/480
#define TXJ_H_ADJUST TXJ_MAINSCREEN_HEIGHT/320
#define TXJ_CGRECT(X,Y,WIDTH,HEIGHT) CGRectMake(X*TXJ_W_ADJUST, Y*TXJ_H_ADJUST, WIDTH*TXJ_W_ADJUST, HEIGHT*TXJ_H_ADJUST)
#ifdef DEBUG
#define TXJLog(...) NSLog(__VA_ARGS__)
#else
#define TXJLog(__unused ...)
#endif
2:原文链接:http://www.cocoachina.com/ios/20160713/17026.html
宏的用法:一般字符串抽成宏,代码抽成宏使用;
const用法:一般常用的字符串定义成const(对于常量字符串苹果推荐我们使用const);
宏与const区别:
1.编译时刻不同,宏属于预编译 ,const属于编译时刻
2.宏能定义代码,const不能,多个宏对于编译会相对时间较长,影响开发效率,调试过慢,const只会编译一次,缩短编译时间。
3.宏不会检查错误,const会检查错误
通过以上对比,我们以后在开发中如果定义一个常量字符串就用const,定义代码就用宏。我们来看看如何使用const,.h中定义:UIKIT_EXTERN NSString * const FAN_TOKEN;
.m中实现:NSString * const FAN_TOKEN = @"mtoken";
.沙盒目录文件
1
2
3
4
5
6
|
//获取temp
#define kPathTemp NSTemporaryDirectory()
//获取沙盒 Document
#define kPathDocument [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]
//获取沙盒 Cache
#define kPathCache [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]
.获取当前语言
|
.判断是真机还是模拟器
1
2
3
4
5
6
|
#if TARGET_OS_IPHONE
//iPhone Device
#endif
#if TARGET_IPHONE_SIMULATOR
//iPhone Simulator
#endif
|
设置 view 圆角和边框
1
2
3
4
5
6
|
#define LRViewBorderRadius(View, Radius, Width, Color)\
\
[View.layer setCornerRadius:(Radius)];\
[View.layer setMasksToBounds:YES];\
[View.layer setBorderWidth:(Width)];\
[View.layer setBorderColor:[Color CGColor]]
|
由角度转换弧度 由弧度转换角度
1
2
|
#define LRDegreesToRadian(x) (M_PI * (x) / 180.0)
#define LRRadianToDegrees(radian) (radian*180.0)/(M_PI)
|
.自定义高效率的 NSLog
项目开发中,我们会在许多地方加上Log,但是发布的时候又不想用这些Log,我们也不可能一个一个的删除,所以自定义Log是必然的!
1
2
3
4
5
|
#ifdef DEBUG
#define LRLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])
#else
#define LRLog(...)
#endif
|
项目开发中,我们会在许多地方加上Log,但是发布的时候又不想用这些Log,我们也不可能一个一个的删除,所以自定义Log是必然的!
1
2
3
4
5
|
#ifdef DEBUG
#define LRLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])
#else
#define LRLog(...)
#endif
|