OC使用inline替代宏
CG_INLINE void
GCDDelay(int64_t delayInSeconds,dispatch_block_t block){
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(),block);
}
CG_INLINE void
GCDOnce( dispatch_once_t onceToken,DISPATCH_NOESCAPE dispatch_block_t block){
dispatch_once ( &onceToken, block);
}
CG_INLINE CGFloat
WIDTH(){
static CGFloat ScreenWidth;
static dispatch_once_t onceToken;
GCDOnce(onceToken,^{
ScreenWidth = CGRectGetWidth([UIScreen mainScreen].bounds);
});
return ScreenWidth;
};
CG_INLINE CGFloat
HEIGHT(){
static CGFloat ScreenHeight;
static dispatch_once_t onceToken;
GCDOnce(onceToken,^{
ScreenHeight = CGRectGetHeight([UIScreen mainScreen].bounds);
});
return ScreenHeight;
};
CG_INLINE CGRect
SCREEN(){
static CGRect ScreenRect;
static dispatch_once_t onceToken;
GCDOnce(onceToken,^{
if (CGRectIsEmpty(ScreenRect) || CGRectIsNull(ScreenRect)) {
ScreenRect = [UIScreen mainScreen].bounds;
}
});
return ScreenRect;
};
CG_INLINE CGFloat
FontScale(){
static CGFloat FScale;
static dispatch_once_t onceToken;
GCDOnce(onceToken,^{
FScale = 72.0/96.0;
});
return FScale;
};
CG_INLINE CGFloat
SizeScaleX(){
static CGFloat autoSizeScaleX;
static dispatch_once_t onceToken;
GCDOnce(onceToken,^{
autoSizeScaleX = (WIDTH()>480?WIDTH()/320.0:1.0);
});
return autoSizeScaleX;
};
CG_INLINE CGFloat
SizeScaleY(){
static CGFloat autoSizeScaleY;
static dispatch_once_t onceToken;
GCDOnce(onceToken,^{
autoSizeScaleY = (WIDTH()>480?HEIGHT()/568.0:1.0);
});
return autoSizeScaleY;
};
CG_INLINE CGRect
CGLFLMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x *SizeScaleX();
rect.origin.y = y *SizeScaleY();
rect.size.width = width *SizeScaleX();
rect.size.height = height *SizeScaleY();
return rect;
};
CG_INLINE CGPoint
CGPointLFLMake(CGFloat x, CGFloat y)
{
CGPoint pointLFL;
pointLFL.x = x * SizeScaleX();
pointLFL.y = y * SizeScaleY();
return pointLFL;
};
CG_INLINE CGSize
CGSizeLFLMake(CGFloat width, CGFloat height)
{
CGSize sizeLFL;
sizeLFL.width = width* SizeScaleX();
sizeLFL.height = height* SizeScaleY();
return sizeLFL;
};
OC使用inline替代宏的更多相关文章
- c++内联函数解析(inline)
一.基本定义 inline是C++语言中的一个关键字,可以用于程序中定义内联函数,inline的引进使内联函数的定义更加简单.说到内联函数,这里给出比较常见的定义,内联函数是C++中的一种特殊函数,它 ...
- R语言高性能编程,优化(一)
这段时间学习了<R高性能编程>这本书,基于这段时间做的项目实践,总结了一些自己的体会,和大家分享 一.为什么R程序有时候会很慢?1.计算性能的三个限制条件 cpu ram io R代码本身 ...
- C++笔试
个人整理,借鉴网络 1.C和C++中struct的区别 1).C的struct无protect和private属性,C++的有 2).C不能定义函数,C++能 3).C中struct加了typedef ...
- 高效完成R代码
为什么R有时候运行慢? 参考https://www.cnblogs.com/qiaoyihang/p/7779144.html 一.为什么R程序有时候会很慢? 1.计算性能的三个限制条件 cpu ra ...
- iOS OC内联函数 inline的详解
inline 在iOS中的一些框架中,static inline是经常出现的关键字组合. static自不用多说,表示在当前文件中应用,如 static A, 在其它文件中也可以出现static A. ...
- inline用于替代宏函数
在C&C++中 一.inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义一例: #define ExpressionName(Va ...
- OC 面试问题汇总
OC 问题汇总: 1. 你如何理解 iOS 内存管理 1. new alloc copy retain这些对象我们都要主动的release或者 autorelease 2. 如果是类方法创建的 ...
- const与#define宏常量 , inline与#define
1.预处理 预处理器是在真正的编译开始之前由编译器调用的独立程序.预处理器可以删除注释.包含其他文件以及执行宏替代. 预处理命令(宏定义#define..#undef. 文件包含#include. 条 ...
- OC中修饰符:宏define 常量:const extern
const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * c ...
随机推荐
- Linux多线程(二)(线程等待,退出)
1. 线程的等待退出 1.1. 等待线程退出 线程从入口点函数自然返回,或者主动调用pthread_exit()函数,都可以让线程正常终止 线程从入口点函数自然返回时,函数返回值可以被其它线程用pth ...
- 【笨嘴拙舌WINDOWS】消息机制
如果将WINDOWS比做一个人,那么他就是为你提供各种服务的巫师,他手上有各式各样,奇形怪状的奇葩物品.他脑子充满了智慧,能够为你解决你所不能解决的疑难杂症.但是他不认识你! 你从小立志要想考状元,去 ...
- xmlWriter 以UTF-8格式写xml问题
dom4j中的XMLWriter提供以下几种构造方法: XMLWriter() XMLWriter(OutputFormat format) XMLWriter(OutputStream out) X ...
- Java中String 的equals 和==详解
一.Java中数据存储区域包括: 1.寄存器:最快的存储区,由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new ...
- HDU 2063 (匈牙利算法) 过山车
有m个妹子和n男生,男生和女生之间互相有好感则连一条线,问最多能撮合出多少对 这篇博文写的很好,没有让人望而生畏的图论术语 http://blog.csdn.net/dark_scope/articl ...
- openerp学习笔记 context 的应用
1.在Action中定义,context用于传递搜索条件和分组条件,在搜索视图中默认显示: 示例代码: <record model="ir.actions.act_window&quo ...
- acdream 1683 村民的怪癖(KMP,经典变形)
Problem Description 娜娜费劲九牛二虎之力终于把糖果吃完了(说好的吃不完呢?骗人,口亨~),于是,缘溪行,忘路之远近.忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷,娜娜甚异之 ...
- bash 的漏洞,你们中招了吗?
http://threatpost.com/major-bash-vulnerability-affects-linux-unix-mac-os-x 检测: $ env x='(){:;}; echo ...
- RMAN duplicate from active遇到ora-17167,ora-12154
最近在从活动数据库进行异机克隆时碰到了ORA-17629,ORA-17627,ORA-12154的错误,起初以为是一个Bug呢.Oracle Bug着实太多了,已经成了习惯性思维了.汗!错误提示是无法 ...
- JBPM4入门——7.等待节点的单条线手动执行
本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...