美文网首页runtime
类实例方法转成block

类实例方法转成block

作者: 轻云绿原 | 来源:发表于2017-03-27 20:27 被阅读12次

运用runtime可以把一个类方法转成block

importFoundation

importUIKit

classDemo:NSObject{

functest(msg:String){

print(msg)

}

}

let sel =#selector(Demo.test(msg:))

///获取test(msg:)的方法

let method:Method=class_getInstanceMethod(Demo.self,sel)

///获取方法实现体的指针

let oldIMP:IMP=method_getImplementation(method)

//把方法体指针转成具体的block

typealiasOldBlockType =@convention(c) (Demo,Selector,String)->Void

let oldBlock =unsafeBitCast(oldIMP, to:OldBlockType.self)

//调用

oldBlock(Demo(),sel,"调用方法。")

相关文章

  • 类实例方法转成block

    运用runtime可以把一个类方法转成block importFoundationimportUIKitclass...

  • Hook Objective-C中的block

    前言 iOS的方法交换能为我们 hook 实例方法,也能为我们 hook 类方法,但是对于 Block 却无能为力...

  • 使用 Block 代码块进行实例化操作

    Swift 为我们提供一种非常优雅的类实例化语法, Block 代码块实例化。 使用 Block 代码块实例化,可...

  • Swift 中的方法声明

    实例方法 类方法 静态方法 实例方法由实例对象进行调用;类方法和静态方法由类对象进行调用

  • Python类

    类方法:classmethod 静态方法:staticmethod 1.类实例方法只能被类实例调用。 2.类实例可...

  • 再论静态方法和类方法

    实例对象可以调用实例方法、类方法、静态方法 类对象只能调用类方法、静态方法

  • runtime(一)

    总结:Classget 类名,父类;实例变量;属性;实例方法,类方法,方法实现;Copy 实例变量列表;属性列...

  • 类方法 VS 静态方法

    类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法。 @staticmethod@classmetho...

  • Python实例方法、类方法、静态方法

    实例方法,类方法,静态方法都可以通过实例或者类调用,只不过实例方法通过类调用时需要传递实例的引用(python 3...

  • 类方法和实例方法的区别

    类方法和实例方法 1、类方法是属于整个类,而不属于某个对象。2、类方法只能访问类成员变量,不能访问实例变量,而实例...

网友评论

    本文标题:类实例方法转成block

    本文链接:https://www.haomeiwen.com/subject/huzrottx.html