系统宏定义


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
#define LRCurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])


.判断是真机还是模拟器

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值