草庐IT

ios - 在 Swift 的 NSObject 子类的初始化器中调用 super.init()

我正在使用Swift构建一个iOS应用程序并在Lister上绘图Apple提供的示例项目。Lister使用两个模型对象:List和ListItem。我发现它们都没有在它们的初始化器中调用super.init(),即使它们是NSObject的子类也是如此。但是,在Objective-C版本的Lister中,两个模型对象(AAPLList和AAPLListItem)都会调用[superinit]。Swift编程语言明确指出“指定的初始化程序必须从其直接父类(superclass)中调用指定的初始化程序。”(InitializerChaininginInitialization的规则1)这是

ios - 属性 'self.*' 未在 super.init 调用时初始化

我刚刚将我的xcode更新到6.3.1。问题是我从Swift1.2开始收到这个奇怪的错误消息。我收到了这种错误信息/Users/MNurdin/Documents/iOS/xxxxx/Library/SideBar.swift:32:15:Property'self.originView'notinitializedatsuper.initcall/Users/MNurdin/Documents/iOS/xxxxx/Library/SideBar.swift:38:20:Immutablevalue'self.originView'mayonlybeinitializedonce关于这

ios - 属性 'self.*' 未在 super.init 调用时初始化

我刚刚将我的xcode更新到6.3.1。问题是我从Swift1.2开始收到这个奇怪的错误消息。我收到了这种错误信息/Users/MNurdin/Documents/iOS/xxxxx/Library/SideBar.swift:32:15:Property'self.originView'notinitializedatsuper.initcall/Users/MNurdin/Documents/iOS/xxxxx/Library/SideBar.swift:38:20:Immutablevalue'self.originView'mayonlybeinitializedonce关于这

ios - Swift, super.init() Must call a designated initializer of the superclass 'UIView' 错误

这个问题在这里已经有了答案:BuilderrorwhentryingtooverrideaninitializerinXcode6.3Beta3(3个答案)关闭7年前。我是Swift的新手。我继承了一个项目。我看到它在设备上运行。但是,当我检查代码时发现它有很多错误。我能够清除错误。但是,我遇到了这个让我感到困惑的问题。该项目也使用xib文件。这是代码。requiredinit(coderaDecoder:NSCoder){super.init(coder:aDecoder)}overrideinit(frame:CGRect){super.init(frame:frame)}init

ios - Swift, super.init() Must call a designated initializer of the superclass 'UIView' 错误

这个问题在这里已经有了答案:BuilderrorwhentryingtooverrideaninitializerinXcode6.3Beta3(3个答案)关闭7年前。我是Swift的新手。我继承了一个项目。我看到它在设备上运行。但是,当我检查代码时发现它有很多错误。我能够清除错误。但是,我遇到了这个让我感到困惑的问题。该项目也使用xib文件。这是代码。requiredinit(coderaDecoder:NSCoder){super.init(coder:aDecoder)}overrideinit(frame:CGRect){super.init(frame:frame)}init

swift - intrinsicContentSize() - 方法不会覆盖其父类(super class)中的任何方法

我更新到Xcode8beta5,现在在继承自UIView的类上出现以下错误:MethoddoesnotoverrideanymethodfromitssuperclassoverridepublicfuncintrinsicContentSize()->CGSize{...}有解决办法吗? 最佳答案 请查看thelatestreference.(您只需在Apple'sdevelopersite的搜索栏中输入“intrinsicContentSize”一词即可轻松找到它。)DeclarationvarintrinsicContentS

swift - intrinsicContentSize() - 方法不会覆盖其父类(super class)中的任何方法

我更新到Xcode8beta5,现在在继承自UIView的类上出现以下错误:MethoddoesnotoverrideanymethodfromitssuperclassoverridepublicfuncintrinsicContentSize()->CGSize{...}有解决办法吗? 最佳答案 请查看thelatestreference.(您只需在Apple'sdevelopersite的搜索栏中输入“intrinsicContentSize”一词即可轻松找到它。)DeclarationvarintrinsicContentS

Swift 等同于 __attribute((objc_requires_super))?

是否有Swift等同于__attribute((objc_requires_super))如果一个方法没有调用它的super方法,它会发出警告?基本上,如果被覆盖的方法没有调用它的super方法,我想发出警告(或者更好的是,抛出一个编译器错误)。 最佳答案 不,没有Swift等同于__attribute((objc_requires_super))。等效功能,SwiftAttributes,不包含此类属性。Swiftinheritancedocumentation的部分在会提到这样的功能的地方只说:Whenyouprovideame

Swift 等同于 __attribute((objc_requires_super))?

是否有Swift等同于__attribute((objc_requires_super))如果一个方法没有调用它的super方法,它会发出警告?基本上,如果被覆盖的方法没有调用它的super方法,我想发出警告(或者更好的是,抛出一个编译器错误)。 最佳答案 不,没有Swift等同于__attribute((objc_requires_super))。等效功能,SwiftAttributes,不包含此类属性。Swiftinheritancedocumentation的部分在会提到这样的功能的地方只说:Whenyouprovideame

Swift:在子类中覆盖 == 结果仅在父类(super class)中调用 ==

我有一个类(class)A,符合Equatable协议(protocol)和实现==功能。在子类中B我覆盖==进行更多检查。但是,当我比较B的两个实例数组时(两者的类型都是Array),==对于A被调用。当然,如果我将两个数组的类型都更改为Array,==对于B被调用。我想出了以下解决方案:A.swift:internalfunc==(lhs:A,rhs:A)->Bool{iflhsisB&&rhsisB{returnlhsas!B==rhsas!B}return...}这看起来真的很难看,必须为A的每个子类进行扩展.有没有办法确保==for子类首先被调用?