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;
}

 

相关文章
|
机器学习/深度学习 Java
java中swap方法交换两个数的值的两种写法
java中swap方法交换两个数的值的两种写法
|
缓存 Go
Go --- for range会使通道中的缓存值被取出
Go --- for range会使通道中的缓存值被取出
Go --- for range会使通道中的缓存值被取出
|
存储 编译器 Go
这个代码竟然报错了?Go 的不可寻址值了解下
  Dave Cheney 在 Twitter 上发布过一个 Go 的小测验,和往常一样,我从中学到了一些有趣的东西。让我们从他的推文开始:   #golang 小测验:该程序打印什么?   package main   import (   "crypto/sha1"   "fmt"   )   func main() {   input := []byte("Hello, playground")   hash := sha1.Sum(input)[:5]   fmt.Println(hash)   }   令我惊讶的是
148 0
|
监控 程序员
一起谈.NET技术,System.Diagnostics命名空间里的Debug类和Trace类的用途【转】
  在 .NET 类库中有一个 System.Diagnostics命名空间,该命名空间提供了一些与系统进程、事件日志、和性能计数器进行交互的类库。当中包括了两个对开发人员而言十分有用的类Debug类和Trace类。
979 0
|
监控 程序员
System.Diagnostics命名空间里的“.NET研究”Debug类和Trace类的用途【转】
  在 .NET 类库中有一个 System.Diagnostics命名空间,该命名空间提供了一些与系统进程、事件日志、和性能计数器进行交互的类库。当中包括了两个对开发人员而言十分有用的类Debug类和Trace类。
1176 0
|
iOS开发 MacOS Linux
记一次NET Core 2.0在macOS 10.13出现的奇怪Build IO共享冲突问题
相信有些朋友喜欢直接把项目放在移动硬盘上进行工作,为了方便来回在多台电脑或不同的操作系统平台上来回码砖,磁盘的格式基本都是exFAT的(喜欢在macOS上用NTFS或者FAT的都是大佬),在这里我们不讨论exFat的格式优缺点、反正他免费就行,只记一次在MAC上出现的奇怪问题,希望有遇到该问题的朋友...
1217 0
[搬运] .NET Core 2.1中改进的堆栈信息
原文 : Stacktrace improvements in .NET Core 2.1 作者 : Ben Adams 译者 : 张很水 . NET Core 2.1 现在具有可读的异步堆栈信息!使得异步、迭代器和字典 ( key not found ) 中的堆栈更容易追踪! 这个大胆的主张意...
1047 0
|
网络虚拟化 索引