你的App(iOS)几秒钟完成启动?

  • main.m

      #import <UIKit/UIKit.h>
      #import "AppDelegate.h"
      
      extern CFAbsoluteTime StartTime;
      
      int main(int argc, char * argv[]) {
          StartTime = CFAbsoluteTimeGetCurrent();
          NSLog(@"开始启动---->%f",StartTime);
          ...
      }
    

    CFAbsoluteTime StartTime;
    extern CFAbsoluteTime StartTime;

    <u>:声明全局变量StartTime需要** extern ** 关键词修饰,否则外部文件访问不到。</u>

  • AppDelegate.m

      #import "AppDelegate.h"
      
      CFAbsoluteTime StartTime;
      
      @implementation AppDelegate
      
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      {
        dispatch_async(dispatch_get_main_queue(), ^{
          NSLog(@"完成启动---->%f", CFAbsoluteTimeGetCurrent());
          NSLog(@"启动用时---->%f",CFAbsoluteTimeGetCurrent()-StartTime);
        });
        
        ...
      }  
    
  • 原理解释: 这个dispatch_async中提交的工作会在app主线程启动后的下一个run lopp中运行,此时app已经完成了载入并且将要显示第一帧画面,也就是系统会运行到-[UIApplication _reportAppLaunchFinished]之前

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容