swift 为方法追加代码
来源:互联网 发布:java反射调用方法 编辑:程序博客网 时间:2024/04/30 11:59
很多时候嫌弃三方库或者系统框架的某个方法没有执行到自己想要的目的,进行如下代码修改。就可以达到追加代码的目的
//// ViewController.swift// PanaStackView//// Created by 曾祥林 on 2017/3/2.// Copyright © 2017年 曾祥林. All rights reserved.//import UIKitclass ViewController: UIViewController { open override class func initialize() { DispatchQueue.once(token: "haha") { let originalSelector = #selector(ViewController.viewWillAppear(_:)) let swizzledSelector = #selector(ViewController.nsh_viewWillAppear(animated:)) let originalMethod = class_getInstanceMethod(self, originalSelector) let swizzledMethod = class_getInstanceMethod(self, swizzledSelector) let didAddMethod = class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod)) if didAddMethod { class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)) } else { method_exchangeImplementations(originalMethod, swizzledMethod); } } } // MARK: - Method Swizzling func nsh_viewWillAppear(animated: Bool) { self.viewWillAppear(animated) NSLog("交叉出去了") } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func viewWillAppear(_ animated: Bool) { NSLog("没有交叉出去") }}
0 0
- swift 为方法追加代码
- js追加代码的方法
- jQuery为DOM动态追加事件的方法
- js追加html代码
- swift iphone 页面跳转-代码跳转方法
- Swift调用C代码的方法
- XCode6追加PCH文件 Objective C、Swift
- 为Request.Form追加元素
- window加载时执行jquery方法:为html标签替换或追加文本内容
- 《步步深入委托》——为委托追加多个方法指针的原理
- JAVA学习代码——追加文件内容的三种方法
- 通过Java代码将数据追加到文件尾部的方法总结
- jsp追加写文件代码
- url后追加参数代码
- Swift 为Array添加remove方法遇到的问题
- Swift 【为图片的加载提供便利构造方法】
- Java追加写入文件方法
- yum 变量追加的方法
- 通过点击按钮-更换JPanel的背景图片
- Wormholes
- linux常用命令整理
- 免费建站教程
- 系统编程(数据库)
- swift 为方法追加代码
- 程序异常分析指南
- 【剑指offer】面试题14:调整数组顺序使奇数位于偶数前面
- C# 深入理解值类型和引用类型
- Android5.0新特性之Activity切换动画
- CodeForces 586A
- 函数指针
- hello-world
- mysql数据库int(5)以及varchar(20)长度表示的是什么?