草庐IT

Super_VLAN

全部标签

Swift 从父类(super class)调用子类的重写方法

我遇到了一个问题,子类的方法被调用覆盖了一个方法,所以我创建了一个小应用程序来测试它。当父类(superclass)调用其子类覆盖的方法时,父类(superclass)版本的方法仍然会被调用,而不是子类的版本,它覆盖父类(superclass)的方法并且应该是被调用的方法。预期输出:subfoo实际输出:superfoo父类(superclass):classViewController:UIViewController{overridefunctouchesBegan(touches:Set,withEventevent:UIEvent){foo()}funcfoo(){printl

objective-c - 如何在 Swift 中调用指定的父类(super class)初始化器

在Objective-C中,初始化器中有这种标准模式来调用父类(superclass)的指定初始化器。例如:-(instancetype)initWithFrame:(CGRect)frame{self=[superinitWithFrame:frame];if(self){//Initializationcode}returnself;}在Swift类中执行相同初始化的标准方法是什么? 最佳答案 像这样init(frame:CGRect){super.init(frame:frame)//Initializationcode}

Swift 2.0 获取镜像父类(super class)属性

我需要将类的属性作为字典获取。为简单起见,我创建了一个默认实现如下的协议(protocol):protocolListsProperties{functoDictionary()->[String:AnyObject]}extensionListsProperties{functoDictionary()->[String:AnyObject]{letmirrored_object=Mirror(reflecting:self)vardict=[String:AnyObject]()for(_,attr)inmirrored_object.children.enumerate(){if

ios - 在 UITableViewController 中覆盖数据源和委托(delegate)方法时是否需要调用 super?

考虑以下从UITableViewController派生自定义ViewController的代码段。classController:UITableViewController{...)//MARK:-TableViewDataSourceextensionController{overridefunctableView(tableView:UITableView,numberOfRowsInSectionsection:Int)->Int{//callsuper?...}}//MARK:-TableViewDelegateextensionController{overridefunc

ios - XCode 7 如何固定到 super View 而不是播放指南

我正在使用这篇文章中的解决方案。Autolayout:AddconstrainttosuperviewandnotTopLayoutGuide?但是在xcode7中,这个选项不再可用。它被转移到某个地方了吗?还是有另一种方法可以绕过toplayoutguide固定到superView?我发现toplayoutguide对于ios7、8、9表现不同。谢谢! 最佳答案 看起来他们已经删除了菜单选项,但在您放置顶部/底部/尾部/前导边距的位置旁边有一个箭头,仍然会为您提供该选项。以下是顶部和底部布局指南的屏幕截图。出于某种原因,我无法让顶

swift - 如何覆盖私有(private)方法并快速调用 super?

我们知道,如果你需要在swift中覆盖基类中的方法,你必须在该方法之前声明“override”关键字。如果该方法是私有(private)的,您仍然可以快速“覆盖”它,只需添加NOoverride关键字即可。但是,你不能调用super.MethodName(),这是我的问题。比如说,UINavigationController中有一个私有(private)方法,即“_startCustomTransition”,我可以在我的自定义MyNavigationController.swift中执行此操作classMyNavigationController:UINavigationContro

swift - 在 super.init 中引用自己

我有以下代码(编辑:更新代码以便每个人都可以编译并查看):importUIKitstructAction{lettext:Stringlethandler:(()->Void)?}classAlertView:UIView{init(actions:[Action]){super.init(frame:.zero)foractioninactions{//letactionButton=ActionButton(type:.custom)//actionButton.title=action.title//actionButton.handler=action.handler//add

ios - Swift : property 'self.circle1' not initialized at super. 初始化调用出错?

我是编程新手,正在尝试用Swift编写一个井字游戏应用程序,但这个错误使我无法运行该应用程序:属性“self.circle1”未在super.init调用时初始化。该应用程序尚未完成,但我看不到现有代码中的错误所在。请再次彻底解释任何建议,因为我是初学者。谢谢!我的代码:importUIKitclassViewController:UIViewController{//Initializingallimgsasvariables:@IBOutletstrongvarcircle1:UIImageView@IBOutletstrongvarcircle2:UIImageView@IBOu

ios - Swift - 带有 Objective-C 选择器 '*()' 的方法 '*' 与具有相同 Objective-C 选择器的父类(super class) '*' 的 'NSObject' 的 getter 冲突

自从将我的xcode更新到6.3.1后,我收到了这条错误消息。/Users/MNurdin/Documents/iOS/xxxxx/Models/Message.swift:46:10:Method'hash()'withObjective-Cselector'hash'conflictswithgetterfor'hash'fromsuperclass'NSObject'withthesameObjective-Cselector我的代码varhash_:UIntfunchash()->UInt{returnUInt(hash_);} 最佳答案

ios - Swift:Class 不能声明为 public 因为它的 Super 类是内部的

我正在尝试将类声明为公共(public)类,如下所示classRewardsAndRedemptionModel:BaseObject{varrewardHistory:[RewardHistoryModel]!}这是我试图公开类(class)的地方,但我做不到。publicclassRewardHistoryModel:BaseObject{varrewardValue:String!varrecordedByName:String!varrewardFor:String!}即使我阅读了Internet上可用的文档,我也无法理解,请帮助我。 最佳答案