纯代码适配优化方案之一(内联函数的使用)

解说:什么是内联函数?
内联函数就是为了消除函数调用的时间开销,站在代码的角度看,他有函数的结构,在编译后却不再具备函数的性质。参考
 
本文是参照着 iPhone6 的UI 设计原稿进行计算比例的适配。将计算适配的时间大大的缩短,大大的节省了代码适配的代码量。
 
(1)、先在 Appdelegate.h 文件中声明:
@property(nonatomic,assign)CGFloat autoSizeScaleX;
@property(nonatomic,assign)CGFloat autoSizeScaleY;
 
(2)、在 Appdelegate.m 文件中进行初始化:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.autoSizeScaleX = [UIScreen mainScreen].bounds.size.width/375;
    self.autoSizeScaleY = [UIScreen mainScreen].bounds.size.height/667;
    return YES;
}
 
(3)、我们把内联函数写入到一个 viewController 中,通常该 viewController  是叫做一个 XXX_ViewController 的父类,这样的话,你在其它的页面直接调用父类的方法,就很简单了。
//创建内联函数 (在程序编译的时候执行,编译前具有函数的结构,但是在编译后不再有函数的性质,能够很好的消除对函数的调用时间的开销)
CG_INLINE CGRect  CGRectMake1(CGFloat x,CGFloat y,CGFloat width,CGFloat height){
    //创建 Appdelegate 对象,不会在程序运行的时候,不会产生对象(不存在内存循环引用的问题)
    //获取AppDelegate
     //#define MyAppDelegate ((AppDelegate *)[UIApplication sharedApplication].delegate)
    CGFloat scale_x =  MyAppDelegate.autoSizeScaleX;
    CGFloat scale_y = MyAppDelegate.autoSizeScaleY;
    //计算返回
    return CGRectMake(x*scale_x, y * scale_y, width * scale_x, height * scale_y);
}
 
posted @ 2016-07-19 11:22  ywda  阅读(380)  评论(0编辑  收藏  举报