草庐IT

L_OBJC_SELECTOR_REFERENCES

全部标签

ios - #selector(Aclass.method) 和#selector(self.method) 的区别

这个问题在这里已经有了答案:HowdoIresolve"ambiguoususeof"compileerrorwithSwift#selectorsyntax?(3个答案)关闭6年前。有什么区别:#selector(Aclass.someMethod)和#selector(self.someMethod)someMethod是一个实例函数,我在AClass内部调用是这样的:NSNotificationCenter.defaultCenter().addObserver(self,selector:#selector(self.someMethod),//#selector(Aclass

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

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

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

ios - 实例方法表单扩展的覆盖取决于 '@objc' 的弃用推理

我正在尝试将我的代码(用Swift3编写)转换为Swift4,为此我在需要的地方添加了@objc。Xcode在自动修复它们方面做得很好,但我正在努力解决一些问题(都使用相同的2种方法),Xcode无法提供帮助,它只是将@objc放在我的代码中的某个地方.我在我的ViewController类中覆盖了一个名为navbarRightButtonAction(button:)的方法。classViewController:PBViewController{overridefuncnavbarRightButtonAction(button:PBAdaptiveButton){...}}这是我

ios - 不支持覆盖扩展中的非@objc 声明

似乎不知从何而来,我开始收到与我经常使用的两个扩展函数相关的数百个错误。我尝试注释掉出现此错误之前的所有新代码。我还尝试清理我的构建文件夹。我如何摆脱这篇文章标题中发现的错误?为什么我已经成功使用这些扩展几个月了,它却随机出现?extensionUITableViewCell{publicfuncgetSize(large:CGFloat,medium:CGFloat,small:CGFloat)->CGFloat{varsize=CGFloat()letscreenHeight=Int(UIScreen.main.bounds.height)ifscreenHeight>=800{s

ios - '-[CIContext initWithOptions :]: unrecognized selector sent to instance

我用它来生成一个大图像:letcontext=CIContext(options:nil)letbitmapImage:CGImageRef=context.createCGImage(image,fromRect:extent)!CGContextSetInterpolationQuality(bitmapRef,CGInterpolationQuality.None)CGContextScaleCTM(bitmapRef,scale,scale);CGContextDrawImage(bitmapRef,extent,bitmapImage);letscaledImage:CGIm

swift - swift 课前@objc 和课上@objc(class_name) 的区别?

有什么区别:@objcclassMyClass:NSObject{}和@objc(MyClass)classMyClass:NSObject{} 最佳答案 @objc修饰符在Swift2中被弃用。所有标记为@objc的类都必须是NSObject的子类,从而使修饰符@objc变得多余。但是,@objc(xxx)用于定义类的替代名称(供运行时和Objective-C代码使用)。此修饰符仅在您希望在运行时/ObjectiveC代码中使用不同的名称时才有用。默认情况下,运行时名称与声明的名称相同,以模块名称和点作为前缀。例如,classX:

ios - Swift 中 @discardableResult 声明的 ObjC 版本是什么

在Swift3中,当没有使用返回值时会有警告。@discardableResult声明将抑制该功能。我如何在ObjC文件中声明它,意味着,与__attribute__((warn_unused_result))相反 最佳答案 在ObjC和Swift如果您不捕获方法返回的内容,则不会出现警告。但是从swift3开始,你必须使用返回值,如果你不想,使用方法的@discardableresult属性。在ObjC中,如果你想警告你可以使用warn_unused_result属性。-(int)mymethod:(int)a__attribut

ios - 更新后结构崩溃 : [Fabric isCrashlyticsCollectionEnabled]: unrecognized selector sent to class 0x10c0bb918

今天fabric在pod更新后崩溃Fabric1.9.0[FabricisCrashlyticsCollectionEnabled]:unrecognizedselectorsenttoclass0x10c0bb918崩溃线:Fabric.with([Crashlytics.self])它在应用程序启动时崩溃。有人遇到同样的问题吗? 最佳答案 我通过更新我的Podfile恢复到以前版本的Crashlyticspod'Fabric','1.8'pod'Crashlytics','3.11'然后更新Cocoapods:pod更新“Cra

swift - 快速将参数传递给#selector 方法

这个问题在这里已经有了答案:PassextraargumentforUItapgestureRecognizerwithselector(4个答案)关闭6年前。我想在单击图像时将多个参数传递给函数。这是我的代码varparam1=120varparam2="hello"varparam3="world"letimage:UIImage=UIImage(named:"imageName")!bgImage=UIImageView(image:image)letsingleTap=UITapGestureRecognizer(target:self,action:#selector(Wel