swift class的虚函数表

swift class的虚函数表,第1张

概述class NSObjectBase: NSObject {     func Msg_Normal(){ }     func Msg_Second(){}     func Msg_Third(){}          @objc func Msg_ObjcX(){}     @objc dynamic func Msg_Objc_DynamicX(){ }          func cal

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的虚函数表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1017799.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存