runtime --- 方法实现交换

简介: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Menlo; color: #000000 }span.s1 { }  方法欺骗  使用 runtime 进行两个方法的交换 + (void)load { //获取类方法...

 

 

方法欺骗  使用 runtime 进行两个方法的交换

 

+ (void)load {
    //获取类方法
    Method olld = class_getClassMethod([self class], @selector(URLWithString:));
    
    Method new = class_getClassMethod([self class], @selector(AZ_URLWithString:));
    //交换两个方法的实现
    method_exchangeImplementations(olld, new);
    
}

+ (instancetype)AZ_URLWithString:(NSString *)str{
    
    NSURL *url  =[NSURL AZ_URLWithString:str];
    if (!url) {
        NSLog(@"交换方法");
    }
    return url;
}

 

相关文章
|
5月前
|
缓存 安全 测试技术
深入理解 go sync.Map - 基本原理
深入理解 go sync.Map - 基本原理
49 0
|
8月前
|
Go
第一个 Go 程序
第一个 Go 程序
37 2
|
7月前
|
Go
go之channel任意任务完成、全部任务完成退出
go之channel任意任务完成、全部任务完成退出
|
编译器 C语言 C++
C++ --- 特殊类 --- 类型转换 ---IO流
C++ --- 特殊类 --- 类型转换 ---IO流
82 0
|
机器学习/深度学习 Go C语言
创建第一个Go的程序Hello Kitty
创建第一个Go的程序Hello Kitty
228 7
|
Kubernetes Cloud Native Go
你真的知道 GO 中 nil 代表什么吗?
你真的知道 GO 中 nil 代表什么吗?
100 1
|
Go C++ Python
运行第一个Go文件
​# Go学习(1) ## 前言 Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具Python等动态语言的开发速度和C/C++等编译型语言的性能与安全性”。 Go语言近些年来比较热火,饶有兴趣的开始接触了解,配置环境,编写运行第一个程序。 ## 一、创建项目 注:本文用的GoLand版本为官网最新版 Version: 2021.2.2 (地址为 [GoLand官网](https://www.jetbrains.com/go/download/#section=windows "GoLand官网")),用
57 0
|
安全 Go 索引
Go的slice机制
在Go语言中,slice是一种可变长度的序列,它可以动态地增长或缩小其容量。
99 0
|
缓存 Go
Go --- for range会使通道中的缓存值被取出
Go --- for range会使通道中的缓存值被取出
Go --- for range会使通道中的缓存值被取出
|
存储 缓存 算法
Go --- GCache缓存官方例子
Go --- GCache缓存官方例子