草庐IT

Inheritance

全部标签

ios - 作为类型扩展的 Swift 2.0 协议(protocol)

在使用协议(protocol)扩展在Playground玩耍时,我遇到了奇怪的错误。更准确地说,我声明了一个协议(protocol)并按以下方式将其用作类型:protocolInvokeProtocol{funcinvokeA()funcinvokeB()}classController{varinvoker:InvokeProtocol?funcmethodA(){invoker?.invokeA()}funcmethodB(){invoker?.invokeB()}}我接下来做的是创建Controller的子类,并尝试为该特定类型扩展InvokeProtocolextensionI

ios - 子类化时避免违反 LSP

在objective-C中,我可以子类化一个ViewController,如下所示。classKeyboardObserverViewController:UIViewController{vartableView:UITableView?init(){super.init(nibName:nil,bundle:nil)NotificationCenter.default.addObserver(self,selector:#selector(KeyboardObserverViewController.keyboardDidShow(_:)),name:NSNotification.

ios - 当我在 block 中使用 self 时,我得到一个 nil。但是 self 没有释放

我使用继承BaseViewController的viewController。在BaseViewController的方法“viewDidLoad”中调用函数“monitorNetworkStatus()”。privatefuncmonitorNetworkStatus(){ReachabilityManager.shared.startMonitoring{[weakself](status,presentingVC)inprint(self?.description)}}ReachabilityManager是单例的。startMonitoring函数是这样的funcstartMo

ios - 必须调用父类(super class) 'UITableViewHeaderFooterView' 的指定初始化程序

我正在努力将我的项目升级到Swift2,我遇到了两个错误,我不明白为什么我以前没有这些错误。第一个是“Initializerdoesnotoverrideadesignatedinitializerfromitssuperclass”第二个是“必须调用父类(superclass)‘UITableViewHeaderFooterView’的指定初始化程序”这是我类(class)的代码:importUIKit@IBDesignableclassCardShadowTableViewHeaderFooterView:UITableViewHeaderFooterView{//MARK:-Pu

Swift:从父类(super class)返回子类类型的对象数组

我有一个Swift类作为我应用程序中其他类型对象的基类。该类用于数据建模,因此它实现了各种功能来保存和从存储中检索对象。为了示例,我的类如下所示:classBase:NSObject{classfuncobjects()->[Base]{return[]}}基类的子类如下所示:classSubclass:Base{}这很好用,因为我可以创建子类的实例,然后获取对象数组:letobjects=Subclass.objects()但是,返回的数组设置为[Base]类型。有什么方法可以让Subclass.objects()自动返回一个[Subclass],而无需在子类中编写任何额外的代码?我

swift - 混合 Swift 属性观察者和继承

我一直在修补这个问题,我想知道是否有任何关于这个主题的文献,或者有什么方法可以知道预期的行为是什么。这是一个例子:classA{varpaused:Bool=false{willSet{print("ClassAwillSetonpausedcalled")}didSet{print("ClassAdidSetonpausedcalled")}}}classB:A{overridevarpaused:Bool{willSet{print("ClassBwillSetonpausedcalled")}didSet{print("ClassBdidSetonpausedcalled")}}

swift - 如何让一个 UIViewController 继承另一个 UIViewController IBOutlets?

在实现以下(类继承)之后:classUIViewControllerA:UIViewControllerB{}如何让UIViewControllerA继承UIViewControllerBIBOutlets?如何将Storyboard中的组件连接到子类UIViewControllerA? 最佳答案 如果您的目标是让IBOutlets被继承,您应该执行以下操作:1-在父类(superclass)中添加IBOutlets:父类(superclass)(UIViewController)不应直接连接到Storyboard中的任何ViewC

ios - 使用静态方法时如何获取特定实例

我希望在使用我的静态方法时得到一个特定的实例。例如:classFood:NSObject{varname:StringclassfuncinitFruit()->Food?{letfruitName=NSStringFromClass(self).components(separatedBy:".").last!asStringif"Apple"==fruitName{returnApple(name:fruitName)}elseif"Orange"==fruitName{returnOrange(name:fruitName)}returnnil}init(name:String)

ios - UIBezierPath子类初始化器

我正在尝试创建UIBezierPath的子类,以添加一些对我有用的属性。classMyUIBezierPath:UIBezierPath{varselectedForLazo:Bool!=falseoverrideinit(){super.init()}/*CompileError:Mustcalladesignatedinitializerofthesuperclass'UIBezierPath'*/init(rect:CGRect){super.init(rect:rect)}/*CompileError:Mustcalladesignatedinitializerofthesup

swift - 继承父工厂方法

我有A类及其继承自A的子类B。现在,我在A中有一个类方法,它从某个带有“inout”的地方获取实例,并检查它是否为nil,如果不是,则用必要的参数填充它。例如:classA{classfuncfillInstance(inoutinstance:Self,parameters:[String])->Self{guardletinstance=instanceelse{returnSelf(parameters:parameters)}returninstance}}现在,当然没有任何有Self的东西是无效的:)我需要一种方法使其有效。在Swift中有可能吗?这里的一切都是虚构的。我只需