在oc中一些常用的宏定义总结
2024-08-30 00:21:23
1.打印CGRect,Size,Point
#define NSLogRect(rect) NSLog(@"%s x:%.4f, y:%.4f, w:%.4f, h:%.4f", #rect, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)
#define NSLogSize(size) NSLog(@"%s w:%.4f, h:%.4f", #size, size.width, size.height)
#define NSLogPoint(point) NSLog(@"%s x:%.4f, y:%.4f", #point, point.x, point.y)
2.宏定义的销毁
#define NetworkOn //定义一个宏,如果该宏定义了,则在应用里使用网络 -(void)closeNetwork
{
//突然发生意外的情况,网络无法使用了,调用该方法,取消NetworkOn的宏定义
#undef NetworkOn
}
3.条件编译语句 #if #else #endif
1》判断是否开启ARC,有些库需要ARC支持,则在编译之前可以判断用户有没有开启ARC,同样__has_feature(objc_arc)这玩意儿也是xcode预置的 , 前缀是这个的"__"都是预定宏;
#if !__has_feature(objc_arc)
//如果没有开启ARC这里可以做一些错误处理 比如:
#error "啊 啊 啊~ 伦家需要ARC"
#endif
2》对不同版本的os系统做策略
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0
//如果ios版本低于7.0,这里可以干一些事情
#endif
3》判断设备类型
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#ifdef IS_IPAD
//这台设备是IPAD呀~~~~
#else
//这货是IPhone
#endif
4》对于常用的编译语句总结
//这个东西简单但是很常使用,正所谓IF在手,天下我有 哈哈哈
#if define #ifdef #ifndef #elif
#if define = #ifdef
#if !define = #ifndef
#elif = "else if"
5》错误、警告处理 #error 这个可以终止不满足使用条件的库不被编译
#if !__has_feature(objc_arc)
#error "我的低调不是你装逼的资本!这个库需要开启ARC,不然你别用!"
#endif
6》对于一些警告的强制措施,做一个高逼格的程序猿
如果你在Xcode中设置了,
如果你设置成Yes,那么你的waring就等于error,编译不了的哦。
最新文章
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(11)-系统日志和异常的处理①
- Java中区别.toString() ,(String),valueOf()方法
- Windows下查看进程及结束进程命令[转]
- Stage3D学习笔记(二):使用GPU绘制一个三角形
- [FML]学习笔记二 PAC Learning Model
- Mr. Kitayuta&#39;s Colorful Graph 多维并查集
- as3 页游中,新手指导中,屏蔽所有交互对象,但除了指定交互对象可用的方法【转http://blog.csdn.net/linjf520/article/details/9450945】
- &;&;与||的用法总结
- Python用Tkinter的Frame实现眼睛护士的倒计时黑色屏幕
- Entity Framework技巧系列之七 - Tip 26 – 28
- solr研磨之游标分页
- PHP 数组反转(值有重复)
- ORACLE 数据库使用正则表达式重新计算指定位置的数字为新的数字
- 聊聊数据库~2.SQL环境篇
- Mysql 提升大数据表的拷贝效率
- <;20190106>;千兆 小型局域网传输速率不达标问题解决
- 网络通信协议之ICMP
- Python创建第一个django应用
- JAVA声明一个对象数组
- mysql出现1030 Got error 28 from storage engine解决方法
热门文章
- LaTeX 如何在文档的侧面插入图片实现";绕排";?
- ZSTU 4241 圣杯战争(ST表+二分)
- Codeforces 696E ...Wait for it...(树链剖分)
- House Robber(动态规划)
- chattr&;chown&;cat&;cut&;useradd&;passwd&;chage&;usermod
- linux的history命令设置
- Android_自己定义切换控件SwitchView
- 我猜你不会使用try-catch
- Android自己定义控件
- 配置Office Outlook 2013