class NSObjectBase: NSObject {
func Msg_normal(){ }
func Msg_Second(){}
func Msg_Third(){}
@objc func Msg_ObjcX(){}
@objc dynamic func Msg_Objc_DynamicX(){ }
func calltest(){self.Msg_normal()}
func callAgain(){self.Msg_Third()}
}
extension NSObjectBase{
@objc func OcExtensionFunc(){}
}
class DerivedOcclass:NSObjectBase{
overrIDe func Msg_normal() {}
overrIDe func OcExtensionFunc(){}
overrIDe func Msg_Objc_DynamicX() {}
}
swiftc -emit-sil BaseClass.swift | xcrun swift-demangle > ClassFunc.silgen
cat ClassFunc.silgen
class NSObjectBase : NSObject {
func Msg_normal()
func Msg_Second()
func Msg_Third()
@objc func Msg_ObjcX()
@objc dynamic func Msg_Objc_DynamicX()
func calltest()
func callAgain()
}
extension NSObjectBase {
@objc dynamic func OcExtensionFunc()
}
class DerivedOcclass : NSObjectBase {
overrIDe func Msg_normal()
overrIDe dynamic func OcExtensionFunc()
overrIDe dynamic func Msg_Objc_DynamicX()
}
sil_vtable NSObjectBase {
#NSObjectBase.Msg_normal!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.Msg_normal() -> () // NSObjectBase.Msg_normal()
#NSObjectBase.Msg_Second!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.Msg_Second() -> () // NSObjectBase.Msg_Second()
#NSObjectBase.Msg_Third!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.Msg_Third() -> () // NSObjectBase.Msg_Third()
#NSObjectBase.Msg_ObjcX!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.Msg_ObjcX() -> () // NSObjectBase.Msg_ObjcX()
#NSObjectBase.callTest!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.calltest() -> () // NSObjectBase.calltest()
#NSObjectBase.callAgain!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.callAgain() -> () // NSObjectBase.callAgain()
}
sil_vtable DerivedOcclass {
#NSObjectBase.Msg_normal!1: (NSObjectBase) -> () -> () : @NSObjectBase.DerivedOcclass.Msg_normal() -> () [overrIDe] // DerivedOcclass.Msg_normal()
#NSObjectBase.Msg_Second!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.Msg_Second() -> () [inherited] // NSObjectBase.Msg_Second()
#NSObjectBase.Msg_Third!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.Msg_Third() -> () [inherited] // NSObjectBase.Msg_Third()
#NSObjectBase.Msg_ObjcX!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.Msg_ObjcX() -> () [inherited] // NSObjectBase.Msg_ObjcX()
#NSObjectBase.callTest!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.calltest() -> () [inherited] // NSObjectBase.calltest()
#NSObjectBase.callAgain!1: (NSObjectBase) -> () -> () : @NSObjectBase.NSObjectBase.callAgain() -> () [inherited] // NSObjectBase.callAgain()
}
class BaseClass {
func normalFunc(){}
@objc func ObjcFunc(){}
@objc dynamic func ObjcDynamicFunc(){}
}
extension BaseClass{
@objc func Extensionnormal(){}
func ExtenNoneOcnormal(){}
}
class DerivedClass:BaseClass{
overrIDe func normalFunc() {}
overrIDe func ObjcFunc(){}
overrIDe func ObjcDynamicFunc(){}
overrIDe func Extensionnormal(){}
}
extension DerivedClass{}
class BaseClass {
func normalFunc()
@objc func ObjcFunc()
@objc dynamic func ObjcDynamicFunc()
init()
deinit
}
extension BaseClass {
@objc dynamic func Extensionnormal()
func ExtenNoneOcnormal()
}
class DerivedClass : BaseClass {
overrIDe func normalFunc()
overrIDe func ObjcFunc()
overrIDe dynamic func ObjcDynamicFunc()
overrIDe dynamic func Extensionnormal()
overrIDe init()
deinit
}
sil_vtable BaseClass {
#BaseClass.normalFunc!1: (BaseClass) -> () -> () : @BaseClass.BaseClass.normalFunc() -> () // BaseClass.normalFunc()
#BaseClass.ObjcFunc!1: (BaseClass) -> () -> () : @BaseClass.BaseClass.ObjcFunc() -> () // BaseClass.ObjcFunc()
}
sil_vtable DerivedClass {
#BaseClass.normalFunc!1: (BaseClass) -> () -> () : @BaseClass.DerivedClass.normalFunc() -> () [overrIDe] // DerivedClass.normalFunc()
#BaseClass.ObjcFunc!1: (BaseClass) -> () -> () : @BaseClass.DerivedClass.ObjcFunc() -> () [overrIDe] // DerivedClass.ObjcFunc()
}
总结以上是内存溢出为你收集整理的swift class的虚函数表全部内容,希望文章能够帮你解决swift class的虚函数表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)