//动态调用方法
// 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动态调用方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- Swift vs. Objective-C 在Swift和Objective-C的混编项目中,如何在Swift文件...
- 静态库里面有图片你把静态库拖入到,有和自己图片相同的工程里面,在功能运行时就会覆盖,值能保留一张图片 如何避免这个...
- 动态调用动态库方法c/c++linuxwindows 关于动态调用动态库方法说明 一、 动态库概述 1、 动态库的...
- Swift 类方法 和OC类似,就是通过类本身调用方法,在方法(func)关键字前面用static修饰,如果父类允...