//动态调用方法
// let selector = NSSelectorFromString("searchBarShouldBeginEditing:")
// if let delegate = searchBarDelegate {
// if let method = extractMethodFrom(owner: searchBarDelegate!, selector: selector) {
// method(searchBar)
// }
// }
func extractMethodFrom(owner: AnyObject, selector: Selector) -> ((Any?) -> Any)? {
let method: Method?
if owner is AnyClass {
method = class_getClassMethod(owner as? AnyClass, selector)
} else {
print(type(of: owner))
method = class_getInstanceMethod(type(of: owner), selector)
}
if let one = method {
let implementation = method_getImplementation(one)
typealias Function = @convention(c) (AnyObject, Selector, Any?) -> Void
let function = unsafeBitCast(implementation, to: Function.self)
return { userinfo in function(owner, selector, userinfo) }
} else {
return nil
}
}
Swift动态调用方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Swift vs. Objective-C 在Swift和Objective-C的混编项目中,如何在Swift文件...
- 静态库里面有图片你把静态库拖入到,有和自己图片相同的工程里面,在功能运行时就会覆盖,值能保留一张图片 如何避免这个...
- 动态调用动态库方法c/c++linuxwindows 关于动态调用动态库方法说明 一、 动态库概述 1、 动态库的...
- Swift 类方法 和OC类似,就是通过类本身调用方法,在方法(func)关键字前面用static修饰,如果父类允...