面试篇(六):RunTime 熟悉吗?

RunTime 是做什么的?

RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制

你都在哪些方面用过RunTime,可以举例说明吗?

  • 拦截系统自带的方法调用
1.监控移动端上是否安装了某个App。
#import < objc/runtime.h >

Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");

NSObject *workspace = [LSApplicationWorkspace_class 
performSelector:@selector(defaultWorkspace)];

BOOL installed = [workspace performSelector:@selector(applicationIsInstalled:) 
withObject:@"com.xxxxx.cx"];

NSLog(@"%d",installed);
 
  • 交换方法
1.UIImage 加载图片,图片不存在的时候提示。

#import "UIImage+Category.h"
#import <objc/runtime.h>

@implementation UIImage (Category)

+ (void)load{
    
    // 获取imageWithName方法地址
    Method imageWithName = class_getClassMethod(self, @selector(imageWithName:));
    
    // 获取imageWithName方法地址
    Method imageName = class_getClassMethod(self, @selector(imageNamed:));
    
    // 交换方法地址,相当于交换实现方式
    method_exchangeImplementations(imageWithName, imageName);
    
}

+ (instancetype)imageWithName:(NSString *)name
{
    
    // 这里调用imageWithName,相当于调用imageName
    UIImage *image = [self imageWithName:name];
    
    if (image == nil) {
        NSLog(@"%@ 没有找到图片",name);
    }
    
    return image;
}

Log.png

最近比较忙,待更~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于从事 iOS 开发人员来说,所有的人都会答出【runtime 是运行时】什么情况下用runtime?大部分人能...
    梦夜繁星阅读 9,085评论 7 64
  • 一个人,呆在宿舍,嗅不到中秋的味道。 只是,在跟妈妈的聊天中,感觉到了没有回家过节的失落和心酸。 昨晚,彻夜难眠。...
    减肥的女孩阅读 2,286评论 0 1
  • 过着每天上班的生活,想着每天能睡觉睡到自然醒的感觉。大冷天离不开被子,离不开奶茶的我,上班的生活该怎么坚持下去……...
    Sunnyfuxinbo阅读 1,846评论 0 0
  • 反反复复的体重 1、直觉他叫什么名字?莎莎 2、他几岁了? 4 3、他现在是什么状态? 有点生气 4、他有什么愿望...
    豆子妈2011阅读 1,202评论 0 0
  • 昨晚3:0伯恩利后,曼城取得了各项赛事的11连胜。截至英超第九轮,曼城攻入了恐怖的32球,冠绝英超。如果不是对方门...
    Sakuraok阅读 2,755评论 0 0