iOS-开发常用宏
2016-04-27 09:22
483 查看
// 以release模式编译的程序不会用NSLog输出,而以debug模式编译的程序将执行NSLog的全部功能。 #ifndef __OPTIMIZE__ #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...){} #endif 或 #ifdef __OPTIMIZE__ #define NSLog(...) #endif
//获取系统版本 #define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue] #define CurrentSystemVersion [[UIDevice currentDevice] systemVersion]
//读取本地图片 #define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:ext]] #define IMAGE(A) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:A ofType:nil]]
// 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 RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
//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)
//判断是否为iOS7 #define IsIOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >=7.0 ? YES : NO)
//常用尺寸 #define StatusBar_HEIGHT 20 #define NavigationBar_HEIGHT 44 #define NavigationBarIcon 20 #define TabBar_HEIGHT 49 #define TabBarIcon 30 #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
//判断是真机还是模拟器 #if TARGET_OS_IPHONE //iPhone Device #endif #if TARGET_IPHONE_SIMULATOR //iPhone Simulator #endif
//block循环引用 #define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;
//app程序版本号 #define app_Version [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
Block 强引用解决:Apple建议,传进Block之前,把‘self’转换成weak automatic的变量,这样在Block中就不会出现对self的强引用。如果在Block执行完成之前,self被释放了,weakSelf也会变为 nil。
//Block 内需要多次 访问 self,则需要使用 strongSelf //如果不增加强引用,self在某一次访问过后会被释放掉 #ifndef strongify #if DEBUG #if __has_feature(objc_arc) #define strongify(object) autoreleasepool{} __typeof__(object) object = weak##_##object; #else #define strongify(object) autoreleasepool{} __typeof__(object) object = block##_##object; #endif #else #if __has_feature(objc_arc) #define strongify(object) try{} @finally{} __typeof__(object) object = weak##_##object; #else #define strongify(object) try{} @finally{} __typeof__(object) object = block##_##object; #endif #endif #endif
//Block 内如果需要访问 self 的方法、变量,建议使用 weakSelf。 #ifndef weakify #if DEBUG #if __has_feature(objc_arc) #define weakify(object) autoreleasepool{} __weak __typeof__(object) weak##_##object = object; #else #define weakify(object) autoreleasepool{} __block __typeof__(object) block##_##object = object; #endif #else #if __has_feature(objc_arc) #define weakify(object) try{} @finally{} {} __weak __typeof__(object) weak##_##object = object; #else #define weakify(object) try{} @finally{} {} __block __typeof__(object) block##_##object = object; #endif #endif #endif
整理内容来源于网络,有误请指正
相关文章推荐
- 更新版本流程 ios
- 【代码笔记】iOS-拍照动画
- iOS之深入了解控制器View的加载
- 收藏网址 ios开源库
- iOS web与js的简单交互
- iOS开发:调用相关设备
- 国内90%以上的 iOS 开发者,对 APNs 的认识都是错的
- iOS开发进阶 - CAEmitterLayer,粒子发射系统
- iOS开发进阶 - CAEmitterLayer,粒子发射系统
- 看过的一些iOS书籍及源代码下载地址
- iOS中收回键盘的方法
- iOS socket
- 蜂窝教育IOS培训助学员高薪就业
- 闲鱼iOS:这个鱼塘的水真的有点深!
- iOS开发总结之图层CALayer
- 【重点推荐】iOS开发之芝麻信用SDK的超详细使用教程
- OCiOS开发:发短信、发邮件、打电话及摇一摇实现
- iOS:ShareSDk的分享
- iOS—ViewController的生命周期分析和使用
- iOS开发里面的4个层次