美文网首页
runtime 计算页面加载时间

runtime 计算页面加载时间

作者: 迷雾前行 | 来源:发表于2021-01-20 14:02 被阅读0次

#import 

#import 

@interface UIViewController (Swizzle)

@property(nonatomic,assign) CFAbsoluteTime viewLoadStartTime;

@end

#import "UIViewController+Swizzle.h"

#import 

static char *viewLoadStartTimeKey = "viewLoadStartTimeKey";

@implementation UIViewController (Swizzle)

-(void)setViewLoadStartTime:(CFAbsoluteTime)viewLoadStartTime{

objc_setAssociatedObject(self, &viewLoadStartTimeKey, @(viewLoadStartTime), OBJC_ASSOCIATION_COPY);

}

-(CFAbsoluteTime)viewLoadStartTime{

return [objc_getAssociatedObject(self, &viewLoadStartTimeKey) doubleValue];

}

+ (void)load

{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

SEL origSel = @selector(viewDidAppear:);

SEL swizSel = @selector(swiz_viewDidAppear:);

[UIViewController swizzleMethods:[self class] originalSelector:origSel swizzledSelector:swizSel];

SEL vcWillAppearSel=@selector(viewWillAppear:);

SEL swizWillAppearSel=@selector(swiz_viewWillAppear:);

[UIViewController swizzleMethods:[self class] originalSelector:vcWillAppearSel swizzledSelector:swizWillAppearSel];

SEL vcDidLoadSel=@selector(viewDidLoad);

SEL swizDidLoadSel=@selector(swiz_viewDidLoad);

[UIViewController swizzleMethods:[self class] originalSelector:vcDidLoadSel swizzledSelector:swizDidLoadSel];

SEL vcDidDisappearSel=@selector(viewDidDisappear:);

SEL swizDidDisappearSel=@selector(swiz_viewDidDisappear:);

[UIViewController swizzleMethods:[self class] originalSelector:vcDidDisappearSel swizzledSelector:swizDidDisappearSel];

SEL vcWillDisappearSel=@selector(viewWillDisappear:);

SEL swizWillDisappearSel=@selector(swiz_viewWillDisappear:);

[UIViewController swizzleMethods:[self class] originalSelector:vcWillDisappearSel swizzledSelector:swizWillDisappearSel];

});

}

+ (void)swizzleMethods:(Class)class originalSelector:(SEL)origSel swizzledSelector:(SEL)swizSel

{

Method origMethod = class_getInstanceMethod(class, origSel);

Method swizMethod = class_getInstanceMethod(class, swizSel);

//class_addMethod will fail if original method already exists

BOOL didAddMethod = class_addMethod(class, origSel, method_getImplementation(swizMethod), method_getTypeEncoding(swizMethod));

if (didAddMethod) {

class_replaceMethod(class, swizSel, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));

} else {

//origMethod and swizMethod already exist

method_exchangeImplementations(origMethod, swizMethod);

}

}

- (void)swiz_viewDidAppear:(BOOL)animated

{

[self swiz_viewDidAppear:animated];

if (self.viewLoadStartTime) {

CFAbsoluteTime linkTime = (CACurrentMediaTime() - self.viewLoadStartTime);

NGLog(@" %f s--------------------ssssss   %@:速度:         %f s",self.viewLoadStartTime, self.class,linkTime  );

self.viewLoadStartTime = 0;

}

}

-(void)swiz_viewWillAppear:(BOOL)animated

{

[self swiz_viewWillAppear:animated];

}

-(void)swiz_viewDidDisappear:(BOOL)animated

{

[self swiz_viewDidDisappear:animated];

}

-(void)swiz_viewWillDisappear:(BOOL)animated

{

[self swiz_viewWillDisappear:animated];

}

-(void)swiz_viewDidLoad

{

self.viewLoadStartTime =CACurrentMediaTime();

NSLog(@" %@swiz_viewDidLoad startTime:%f",self.class, self.viewLoadStartTime );

[self swiz_viewDidLoad];

}

@end

相关文章

  • runtime 计算页面加载时间

    #import #import @interfaceUIViewController(Swizzle) @prop...

  • 浅谈前端js面试--运行环境(性能优化)

    优化策略 多使用内存、缓存或其他方法 减少CPU计算、减少网络 入手 加载页面和静态资源 页面渲染 加载资源优化 ...

  • selenium等待

    1.pageLoadTimeout 设置页面加载超时时间: //设定在加载页面时间为15秒,如果在加载时间还不能加...

  • 如何记录加载一个页面的时间

    如何记录加载一个页面的时间 页面加载 页面加载就是从你输入网址+enter开始,发生的一系列过程,最终到页面显示。...

  • 无痕埋点记录 VC 加载时间

    对页面的性能衡量很重要的一个指标就是页面的加载时间 如何定义页面的加载时间 只关注 UIViewControlle...

  • 页面间跳转的性能优化(一)

    前言 现在App的页面越来越复杂,页面初始化的工作越来越多,加载页面所需的时间也随之增长,如果页面加载的时间...

  • 页面加载时间获取

    曾自己借助阿里云和hexo搭了个站点,现已废弃,过往写的博客暂挪到此处。 title: 页面加载时间获取date:...

  • javascript性能优化

    优化页面加载时间html标签加载顺序浏览器加载和执行script标签引入的js时,会暂停页面渲染,直到代码加载并执...

  • 第2节:编写一个计算功能的Angular程序

    (1) 功能描述 当页面加载时,在页面的正文部分通过插入数据的方式计算任意一对数值的和,并将计算后的结果显...

  • 内置DOM操作属性和方法

    DOM树 当浏览器加载HTML页面的时候,首先就是DOM结构的计算。计算出来的结构就是DOM树(把页面中HTML标...

网友评论

      本文标题:runtime 计算页面加载时间

      本文链接:https://www.haomeiwen.com/subject/oirkzktx.html