iOS 通用宏定义 高效全局宏汇总

最近在搭建新项目,为了方便开发,常会用到一些宏定义,梳理了之前项目中用到,又查漏补缺挑选了一些网络上比较不错的,总结了一份分享给大家。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
//通用宏定义
 
#ifndef define_h
 
#define define_h
 
//获取系统对象
 
#define kApplication[UIApplication sharedApplication]
 
#define kAppWindow[UIApplication sharedApplication].delegate.window
 
#define kAppDelegate[AppDelegate shareAppDelegate]
 
#define kRootViewController[UIApplication sharedApplication].delegate.window.rootViewController
 
#define kUserDefaults[NSUserDefaults standardUserDefaults]
 
#define kNotificationCenter[NSNotificationCenter defaultCenter]
 
//获取屏幕宽高
 
#define KScreenWidth([[UIScreen mainScreen]bounds].size.width)
 
#define KScreenHeight[[UIScreen mainScreen]bounds].size.height
 
#define kScreen_Bounds[UIScreen mainScreen].bounds
 
#define Iphone6ScaleWidth KScreenWidth/375.0
 
#define Iphone6ScaleHeight KScreenHeight/667.0
 
//根据ip6的屏幕来拉伸
 
#define kRealValue(with)((with)*(KScreenWidth/375.0f))
 
//强弱引用
 
#define kWeakSelf(type)__weak typeof(type)weak##type = type;
 
#define kStrongSelf(type)__strong typeof(type)type = weak##type;
 
//View圆角和加边框
 
#define ViewBorderRadius(View,Radius,Width,Color)\
 
\
 
[View.layer setCornerRadius:(Radius)];\
 
[View.layer setMasksToBounds:YES];\
 
[View.layer setBorderWidth:(Width)];\
 
[View.layer setBorderColor:[Color CGColor]]
 
// View圆角
 
#define ViewRadius(View,Radius)\
 
\
 
[View.layer setCornerRadius:(Radius)];\
 
[View.layer setMasksToBounds:YES]
 
//property属性快速声明
 
#define PropertyString(s)@property(nonatomic,copy)NSString * s
 
#define PropertyNSInteger(s)@property(nonatomic,assign)NSIntegers
 
#define PropertyFloat(s)@property(nonatomic,assign)floats
 
#define PropertyLongLong(s)@property(nonatomic,assign)long long s
 
#define PropertyNSDictionary(s)@property(nonatomic,strong)NSDictionary * s
 
#define PropertyNSArray(s)@property(nonatomic,strong)NSArray * s
 
#define PropertyNSMutableArray(s)@property(nonatomic,strong)NSMutableArray * s
 
///IOS版本判断
 
#define IOSAVAILABLEVERSION(version)([[UIDevice currentDevice]availableVersion:version]< 0)
 
//当前系统版本
 
#define CurrentSystemVersion[[UIDevice currentDevice].systemVersion doubleValue]
 
//当前语言
 
#define CurrentLanguage([NSLocale preferredLanguages]objectAtIndex:0])
 
//-------------------打印日志-------------------------
 
//DEBUG模式下打印日志,当前行
 
#ifdef DEBUG
 
#define DLog(fmt,...)NSLog((@"%s[Line %d]" fmt),__PRETTY_FUNCTION__,__LINE__,##__VA_ARGS__);
 
#else
 
#define DLog(...)
 
#endif
 
//拼接字符串
 
#define NSStringFormat(format,...)[NSString stringWithFormat:format,##__VA_ARGS__]
 
//颜色
 
#define KClearColor[UIColor clearColor]
 
#define KWhiteColor[UIColor whiteColor]
 
#define KBlackColor[UIColor blackColor]
 
#define KGrayColor[UIColor grayColor]
 
#define KGray2Color[UIColor lightGrayColor]
 
#define KBlueColor[UIColor blueColor]
 
#define KRedColor[UIColor redColor]
 
#define kRandomColorKRGBColor(arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0)//随机色生成
 
//字体
 
#define BOLDSYSTEMFONT(FONTSIZE)[UIFont boldSystemFontOfSize:FONTSIZE]
 
#define SYSTEMFONT(FONTSIZE)[UIFont systemFontOfSize:FONTSIZE]
 
#define FONT(NAME,FONTSIZE)[UIFont fontWithName:(NAME)size:(FONTSIZE)]
 
//定义UIImage对象
 
#define ImageWithFile(_pointer)[UIImage imageWithContentsOfFile:([[NSBundle mainBundle]pathForResource:[NSString stringWithFormat:@"%@@%dx",_pointer,(int)[UIScreen mainScreen].nativeScale]ofType:@"png"])]
 
#define IMAGE_NAMED(name)[UIImage imageNamed:name]
 
//数据验证
 
#define StrValid(f)(f!=nil &&[f isKindOfClass:[NSString class]]&& ![f isEqualToString:@""])
 
#define SafeStr(f)(StrValid(f)?f:@"")
 
#define HasString(str,eky)([str rangeOfString:key].location!=NSNotFound)
 
#define ValidStr(f)StrValid(f)
 
#define ValidDict(f)(f!=nil &&[f isKindOfClass:[NSDictionary class]])
 
#define ValidArray(f)(f!=nil &&[f isKindOfClass:[NSArray class]]&&[f count]>0)
 
#define ValidNum(f)(f!=nil &&[f isKindOfClass:[NSNumber class]])
 
#define ValidClass(f,cls)(f!=nil &&[f isKindOfClass:[cls class]])
 
#define ValidData(f)(f!=nil &&[f isKindOfClass:[NSData class]])
 
//获取一段时间间隔
 
#define kStartTime CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
 
#define kEndTimeNSLog(@"Time: %f",CFAbsoluteTimeGetCurrent()- start)
 
//打印当前方法名
 
#define ITTDPRINTMETHODNAME()ITTDPRINT(@"%s",__PRETTY_FUNCTION__)
 
//GCD
 
#define kDISPATCH_ASYNC_BLOCK(block)dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),block)
 
#define kDISPATCH_MAIN_BLOCK(block)dispatch_async(dispatch_get_main_queue(),block)
 
//GCD -一次性执行
 
#define kDISPATCH_ONCE_BLOCK(onceBlock)static dispatch_once_t onceToken;dispatch_once(&onceToken,onceBlock);
 
//单例化一个类
 
#define SINGLETON_FOR_HEADER(className)\
 
\
 
+(className *)shared ##className;
 
#define SINGLETON_FOR_CLASS(className)\
 
\
 
+(className *)shared ##className { \
 
static className *shared ##className = nil;\
 
static dispatch_once_t onceToken;\
 
dispatch_once(&onceToken,^{ \
 
shared ##className =[[self alloc]init];\
 
});\
 
return  shared ##className;\
 
}
 
#endif /* define_h */

    如有雷同属巧合,如有错误望指正。by:臭码农

http://www.cocoachina.com/ios/20170526/19367.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值