Runtime 学习-方法交换
来源:互联网 发布:知乎python入门 编辑:程序博客网 时间:2024/05/17 06:03
应用场景有很多,因为系统很多方法是不报错误的,我们就可以换成自己的方法,加入一些提示或者判断
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSURL *url=[NSURL URLWithString:@"www.baidu我"]; NSLog(@"%@",url); }
#import "NSURL+Help.h"#import <objc/message.h>@implementation NSURL (Help)/* runtime 方法交换原理 selectorA 指向 IMPa selectorB 指向 IMPb 交换之后 selectorA 指向 IMPb selectorB 指向 IMPa *///load方法会在main方法之前调用,在类加载到内存的时候调用 只会调用一次+(void)load{ //获取类方法 Method system= class_getClassMethod(self, @selector(URLWithString:)); Method myMethod= class_getClassMethod(self, @selector(myURLWithString:)); //交换方法 method_exchangeImplementations(system, myMethod);}//判断url 是否为空+(NSURL *)myURLWithString:(NSString *)str{ //这个地方调用自己的方法,调用系统的,就指向自己的方法实现,会造成死循环 NSURL *url=[NSURL myURLWithString:str]; if (url == nil) { NSLog(@"url为空"); } return url;}@end
阅读全文
0 0
- Runtime 学习-方法交换
- Runtime简单学习之交换方法
- runtime 方法交换
- runtime 方法交换
- Runtime -- 交换方法
- runtime交换方法
- runtime方法交换
- runtime 方法交换
- ios runtime 交换方法实现
- 分类使用runtime交换方法
- ios RunTime之方法交换
- RunTime交换方法的实现
- Runtime(交换方法)笔记
- runtime之实现方法交换(简单版本)
- Runtime的实践——方法交换
- iOS笔记 runtime Method Swizzle 方法交换//
- runtime 几个要点总结-方法交换
- Swift 中使用runtime交换方法实现
- ACHI
- Mysql中的递归层次查询(根据父节点查找所有的子节点和根据子节点查询所有的父节点)的两种运用
- Docker容器数据管理6
- Flash与VB交互
- 三合班课堂总结
- Runtime 学习-方法交换
- 站在巨人的肩膀上——英语
- Java 使用iText7生成带页码的PDF文件(同时生成目录,但是不会合并两个PDF)
- VB总结.3
- 冒泡排序法
- 选择排序法
- 5月英语活动
- Linux操作系统之vim快捷键
- 说话是一门艺术