草庐IT

private-inheritance

全部标签

swift - : class that inherits SKSpriteNode with init,如何调用init(颜色:,大小:)

我使用形状制作游戏原型(prototype),在swift出现之前,spritekit非常棒。现在,当我尝试扩展SKSpriteNode并添加我的init函数时,我无法调用super.init(color,size)。我无法调用创建形状纹理的代码。我需要知道如何调用该init函数,或者如何创建形状纹理,以便我可以覆盖指定的init,然后使用我的形状纹理调用它。编辑:这是我正在做的确切代码,我在另一个SKSprite节点扩展类中做了几乎完全相同的事情:classTetrisCell:SKSpriteNode{letlength=10;convenienceinit(color:UICol

ios - 如何在 Swift 中访问 iOS 私有(private) API?

如何从Swift调用非公共(public)iOS函数和访问非公共(public)属性?具体来说,我想在QuartzCore框架中使用一个非公共(public)类。我想到的一个解决方案是创建“桥接”Objective-C项目,将此非公共(public)API包装到公共(public)API中,然后从Swift调用此Objective-C函数。但是,我的解决方案现在是纯Swift,我更愿意保持这种状态。还有更稳妥的方法吗?(例如向Objective-Cbridgingheaderfile添加内容)注意:我知道您在想什么,私有(private)API是私有(private)的,因为它们不应该

inheritance - 便利初始化覆盖

问题Override一个子类的便利初始值设定项,它会产生编译错误。详情我无法理解为什么Swift(v4.1)不允许我覆盖我的便捷初始化程序。阅读文档我发现这两条规则适用于我的问题:Rule1Ifyoursubclassdoesn’tdefineanydesignatedinitializers,itautomaticallyinheritsallofitssuperclassdesignatedinitializers.Rule2Ifyoursubclassprovidesanimplementationofallofitssuperclassdesignatedinitializer

inheritance - 理解swift语言中的去初始化和继承

假设我有两个类:基类和子类,如下所示:classBase{varname:String?init(){name="Thebaseclass"}deinit{println("callDeinitializationinbaseclass")name=nil}}classSub:Base{varsubName:String?init(){super.init()subName="Thesubclass"}deinit{println("callDeinitializationinsubclass")subName=nil//doesitreallycallsuper.deinit()?/

Swift:私有(private)获取和公共(public)设置

到目前为止,我发现的是公共(public)获取和私有(private)设置的场景,如下所示。private(set)vardistanceTravelled:Double我想反过来。当然以下是行不通的。private(get)publicvardistanceTravelled:Double 最佳答案 如果你想要一个公共(public)的setter但这个var的私有(private)getter你可以将它声明为私有(private)的:privatevardistanceTravelled:Double并创建一个公共(public

arrays - 在 Swift 数组上使用 didSet 和 private(set)

我正在做一个swift项目,我有几个数组。在我的一个数组中,我不希望客户端在不使用我特别定义的方法之一的情况下改变它。另一方面,我希望getter易于访问。我的问题是关于追加和设置属性。问题1:private(set)是否会阻止客户端调用array.append?在另一个阵列上,我想看看它是否已被更改。问题2:如果我使用didSet将属性观察器添加到数组中,那么当一个元素append到数组? 最佳答案 问题1:private(set)会阻止客户端调用array.append吗?是的。问题2:如果我使用didSet在数组上添加一个属性

inheritance - swift 子类*总是*必须调用 super.init()

如果我有一个swift子类:不需要访问self不需要访问self的任何属性我还需要在子类的init()方法中调用super.init()吗?*注意:这是一个不同于提问和回答的问题hereonSO因为上面1和2中列出的细节。 最佳答案 不,你不必。假设您有以下类(class)。classa{letname:Stringinit(){name="james"}}classb:a{lettitle:Stringoverrideinit(){title="supervisor"}}如果你用实例化一个变量让myVar=b()然后,overri

swift - "Cannot inherit from non-open class" swift

从Xcode8beta6开始,我现在在其定义模块之外收到编译错误“无法从非开放类(Class)继承”我继承的类是单独的Swift框架的一部分,但我的项目是为Xcode8beta5编译的。我需要更改什么才能让我的项目再次编译? 最佳答案 我自己找到了答案。在Swift3中,您现在可以将类标记为open而不是public这允许模块外部的文件子类化该类。只需将模块类中的public替换为open。引用here. 关于swift-"Cannotinheritfromnon-openclass"s

Swift 2 内部 vs 私有(private)

我对internal和private访问修饰符感到困惑。文档说:“Internalaccessenablesentitiestobeusedwithinanysourcefilefromtheirdefiningmodule,butnotinanysourcefileoutsideofthatmodule.Youtypicallyuseinternalaccesswhendefininganapp’soraframework’sinternalstructure.”我是怎么想的,如果你在自己的应用程序中,你可以通过内部访问所有内容。但这不是真的,因为当我有一个viewcontrolle

inheritance - Swift 语言中的抽象函数

我想用swift语言创建一个抽象函数。可能吗?classBaseClass{funcabstractFunction(){//HowdoIforcethisfunctiontobeoverridden?}}classSubClass:BaseClass{overridefuncabstractFunction(){//Override}} 最佳答案 Swift中没有抽象的概念(比如Objective-C),但你可以这样做:classBaseClass{funcabstractFunction(){preconditionFailur