草庐IT

objc_requires_super

全部标签

swift - 为什么 Swift 不能自动将泛型类型参数转换为其父类(super class)?

这个问题在这里已经有了答案:Swiftgenericcoercionmisunderstanding(1个回答)HowdoIstoreavalueoftypeClassinaDictionaryoftype[String:Class]inSwift?(2个答案)关闭4年前。在Swift中考虑以下内容:structGenericStruct{}classA{}classB:A{}funcdoSomething()->GenericStruct{returnGenericStruct()}这给出了错误:CannotconvertreturnexpressionoftypeGenericSt

ios - 如何快速将 void block 传递给 objc_setAssociatedObject

我正在尝试通过扩展向UIView添加点击手势支持。这使用Objective-C非常简单,但是当我尝试在运行时属性上设置void返回block时出现以下错误。error:type'()->Void'doesnotconformtoprotocol'AnyObject'这是计算属性:vartapAction:(()->Void)?{get{objc_getAssociatedObject(self,&AssociatedKeys.SNGLSActionHandlerTapBlockKey)}set{objc_setAssociatedObject(self,&AssociatedKeys.

记录vite下使用require报错和解决办法

前情提要我们现在项目用的是vite4+react18开发的项目、但是最近公司有个睿智的人让我把webpack中的bpmn组件迁移过来、结果就出现问题啦:因为webpack是commonjs规范、但是vite不是、好像是es吧、可想而知各种报错废话不多说啦直接上代码:注释是之前commonjs的写法//之前的暴露方法module.exports=CamundaModdleExtension;//现在的exportdefaultCamundaModdleExtension;//之前的引用module.exports={__init__:["camundaModdleExtension"],camu

swift - 泛型 : Same-type constraint type 'G' does not conform to required protocol 'Generator'

我正在开发一个Generator类,它包装了另一个Generator并在其之上提供了一些额外的功能。我几乎所有的东西都可以工作,除了一件事:一个方便的init,它将一个序列作为参数并自动从中创建一个生成器。这是导致错误的代码:classMyGenerator:Generator{typealiasElement=G.Elementvargenerator:Ginit(_generator:G){self.generator=generator}//ERROR:Same-typeconstrainttype'G'doesnotconformto//requiredprotocol'Gen

swift - 在 Swift 中使用不同类型覆盖父类(super class)的可选属性

我正在寻找一种方法来覆盖具有不同类型的父类(superclass)的可选属性。如果我这样测试:protocolprotocol1{functestOne()}protocolprotocol2:protocol1{functestTwo()}classclass1{vartoto:protocol1?init(){}}classclass2:class1{overridevartoto:protocol2?}lettest=class2()我在这一行中遇到错误:overridevartoto:protocol2?类型为“protocol2”的属性“toto”无法覆盖类型为“protoc

ios - ld : SDK. 使用旧版本的 Swift 语言 (XX) 编译的框架比以前的 ObjC 框架文件(未知 ABI 版本 YYY)

简介我正在处理SDK.framework,我需要将其作为闭源软件进行分发。为了涵盖objective-c和swift项目,我决定在objective-c上编写它在本地环境中我有两个项目:SDK(框架源代码)DemoApp(链接到SDK.framework的应用)*这些项目在单独的工作空间中问题当我在本地编译SDK.framework时,它运行完美。一旦我从CI获得一个(它有不同的iOSSDK版本)并尝试将它与DemoApp链接我得到这个错误:ld:SDK.frameworkcompiledwitholderversionofSwiftlanguage(4.0)thanpreviousf

在 super.init 之前在表达式中使用初始化属性的 Swift 错误

这并不重要,也有解决方法,但它令人困惑。请参阅下面的最小示例。我指的是一个已初始化的属性,但在调用super.init()之前。为什么下面指示的语句有编译错误?在表达式的右手和左手使用属性有什么特别之处吗?我查看了Swift语言指南,但找不到任何相关内容。swift编译器是不是在这里搞砸了,还是我遗漏了一些关于属性、self和初始化的东西?还是应该在调用super.init之前所有对“myProperty”的引用都是错误的?(请注意,无论属性是常量(使用“let”)还是其他类型,如Int,都没有关系——同样的事情也会发生。)classMyClass:NSObject{varmyProp

swift - 为什么我可以将 @objc 协议(protocol)声明为弱属性,而不是 swift 协议(protocol)?

我发现如果我创建一个这样的协议(protocol):protocolMyProtocol{}我不能这样做:weakvarmyVar:MyProtocol?我找到了解决这个问题的方法,就是将@objc添加到协议(protocol)声明中:@objcprotocolMyProtocol{}但是为什么这样可以修复错误呢?我的猜测是添加@objc会阻止结构符合协议(protocol),因此变量的值被保证为引用类型。我说得对吗?此外,添加@objc会阻止我添加像[String:Any]这样的swift类型。我也想知道是否有另一种修复错误的方法。 最佳答案

ios - Swift 类中的自定义初始化给出 'property not initialized at implicitly generated super.init call' 错误?

我正在尝试创建一个简单的类用作我的MKMapView的注释。我正在获取要解析到这些注释对象中的数据,并认为用字典初始化注释是个好主意,并在这个模型类中而不是在UIViewController。不过,我似乎无法摆脱编译器错误,每当我尝试修复一个错误时,就会出现另一个错误。当前正在获取未在隐式生成的super.init调用中初始化的“属性self.coordinate”。调用super.init()只会产生不同的错误“Propertyself.coordinatenotinitializedatsuper.initcall”,无论我在哪里在方法中调用super.init()。任何帮助将非常

Swift objc_getAssociatedObject 始终为零

我正在尝试将属性关联到数组扩展:privatevarAssociatedObjectHandle:String="BlaBLabla"extensionArray{varemptyIndex:Int{mutatingget{ifletobject=objc_getAssociatedObject(self,&AssociatedObjectHandle){returnobjectas!Int}letindex=self.searchEmptyIndex()self.emptyIndex=indexreturnindex}set{letnew=(newValueasNSInteger)o