我试图使用这个方法:class_addMethod()在Obj-c中使用像这样: 
  
  
 
class_addMethod([self class],@selector(eventHandler),imp_implementationWithBlock(handler),"v@:");
而且我在Swift中使用它:
class_addMethod(NSClassFromString("UIBarButtonItem"),"handler","v@:") 
 它是UIBarButtonItem的扩展,因为你可能已经想到了.
imp_implementationWithBlock采用AnyObject类型的参数!
如何将() – >()转换为AnyObject?
我试图将它转换为:处理程序为AnyObject,但它给我一个错误说:() – >()不符合协议’AnyObject’
解决方法
How can I cast
()->()intoAnyObject?
警告:此回答包括Swift中的无证件和不安全功能.我怀疑这通过AppStore审查.
let f: ()->() = {
    println("test")
}
let imp = imp_implementationWithBlock(
    unsafeBitCast(
        f as @objc_block ()->(),AnyObject.self
    )
)