草庐IT

Inheritance

全部标签

ios - 从 Objective C 中的 Swift 类继承

我在Xcode7项目中成功地混合和匹配了Obj-C和Swift。但是,我似乎无法弄清楚如何在ObjectiveC类中继承Swift类(是的,我知道将Swift类声明为@objc以提高可见性)。在这种情况下,所需的Swift父类(superclass)MySwiftViewController是UIViewController的子类。目前,在Obj-C中,我直接从UIViewController继承并且无法访问我在MySwiftViewController中添加的功能。这是我的理解:--要声明一个Obj-C类继承自某物,它必须在.h文件中的':'之后:#import@interfaceR

调用 Swift 协议(protocol)扩展方法而不是子类中实现的方法

我遇到了以下代码中解释的问题(Swift3.1):protocolMyProtocol{funcmethodA()funcmethodB()}extensionMyProtocol{funcmethodA(){print("DefaultmethodA")}funcmethodB(){methodA()}}//Test1classBaseClass:MyProtocol{}classSubClass:BaseClass{funcmethodA(){print("SubClassmethodA")}}letobject1=SubClass()object1.methodB()////Te

调用 Swift 协议(protocol)扩展方法而不是子类中实现的方法

我遇到了以下代码中解释的问题(Swift3.1):protocolMyProtocol{funcmethodA()funcmethodB()}extensionMyProtocol{funcmethodA(){print("DefaultmethodA")}funcmethodB(){methodA()}}//Test1classBaseClass:MyProtocol{}classSubClass:BaseClass{funcmethodA(){print("SubClassmethodA")}}letobject1=SubClass()object1.methodB()////Te

ios - Swift 覆盖实例变量

我知道这个答案已经以其他形式发布在这里,但我想了解更多关于在swift中覆盖实例变量的信息。假设我有这段代码classBaseView:UIView{letsomeVariable:Int=1//dosomeworkwithsomeVariable}classExtendedView:BaseView{letsomeVariable:Int=2}好的。根据我的阅读,常量需要一个覆盖前缀。其他答案说我应该声明setter和getter?为什么?我真的不在乎那两个。我只需要替换值。我不能真正使用init覆盖,因为我是从UIView继承的,这可能非常危险(我认为)。欢迎提出任何建议。

ios - Swift 覆盖实例变量

我知道这个答案已经以其他形式发布在这里,但我想了解更多关于在swift中覆盖实例变量的信息。假设我有这段代码classBaseView:UIView{letsomeVariable:Int=1//dosomeworkwithsomeVariable}classExtendedView:BaseView{letsomeVariable:Int=2}好的。根据我的阅读,常量需要一个覆盖前缀。其他答案说我应该声明setter和getter?为什么?我真的不在乎那两个。我只需要替换值。我不能真正使用init覆盖,因为我是从UIView继承的,这可能非常危险(我认为)。欢迎提出任何建议。

ios - 扩展可能不包含存储的属性

我可以在不需要继承的情况下使用扩展在Swift中实现它吗?我收到这个错误扩展可能不包含存储的属性extensionUIButton{@IBInspectablevarborderWidth:CGFloat{didSet{layer.borderWidth=borderWidth}}} 最佳答案 您可以重写setter/getter,这样它就不是存储属性,而只是将set/get转发到层。extensionUIButton{@IBInspectablevarborderWidth:CGFloat{set{layer.borderWidt

ios - 扩展可能不包含存储的属性

我可以在不需要继承的情况下使用扩展在Swift中实现它吗?我收到这个错误扩展可能不包含存储的属性extensionUIButton{@IBInspectablevarborderWidth:CGFloat{didSet{layer.borderWidth=borderWidth}}} 最佳答案 您可以重写setter/getter,这样它就不是存储属性,而只是将set/get转发到层。extensionUIButton{@IBInspectablevarborderWidth:CGFloat{set{layer.borderWidt

inheritance - Swift——要求实现协议(protocol)的类是某个类的子类

我正在创建几个NSView类,所有这些类都支持一个特殊的操作,我们称之为transmogrify。乍一看,这似乎是协议(protocol)的完美位置:protocolTransmogrifiableView{functransmogrify()}但是,此协议(protocol)不强制每个TransmogrifiableView也是一个NSView。这意味着我在TransmogrifiableView上调用的任何NSView方法都不会进行类型检查:letmyView:TransmogrifiableView=getTransmogrifiableView()lettheSuperView

inheritance - Swift——要求实现协议(protocol)的类是某个类的子类

我正在创建几个NSView类,所有这些类都支持一个特殊的操作,我们称之为transmogrify。乍一看,这似乎是协议(protocol)的完美位置:protocolTransmogrifiableView{functransmogrify()}但是,此协议(protocol)不强制每个TransmogrifiableView也是一个NSView。这意味着我在TransmogrifiableView上调用的任何NSView方法都不会进行类型检查:letmyView:TransmogrifiableView=getTransmogrifiableView()lettheSuperView

c# - 将 'set' 添加到 C# 中的接口(interface)属性

我希望通过为该接口(interface)中的属性提供集合访问器来“扩展”该接口(interface)。界面看起来像这样:interfaceIUser{stringUserName{get;}}我想要这样的东西:interfaceIMutableUser:IUser{stringUserName{get;set;}}我需要继承。我无法将IUser的主体复制到IMutableUser中并添加设置访问器。这在C#中可行吗?如果可以,如何实现? 最佳答案 我看不出有任何理由说明您发布的内容不起作用?刚刚做了一个快速测试,它编译正常,但给出了