zoukankan      html  css  js  c++  java
  • 纯代码适配优化方案之一(内联函数的使用)

    解说:什么是内联函数?
    内联函数就是为了消除函数调用的时间开销,站在代码的角度看,他有函数的结构,在编译后却不再具备函数的性质。参考
     
    本文是参照着 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);
    }
     
  • 相关阅读:
    idea 编程字体推荐
    推荐!国外程序员整理的系统管理员资源大全
    jquery阻止事件冒泡的3种方式
    web前端打印总结
    前端打印插件
    object实现小老鼠交互
    前端性能优化(DOM篇)
    输入框获得焦点时外边框颜色改变
    webstorm配置scss自动编译路径
    微信开发测试号配置
  • 原文地址:https://www.cnblogs.com/benpaobadaniu/p/5683717.html
Copyright © 2011-2022 走看看