草庐IT

objc_class

全部标签

swift - 如果 `size` 不在任何子类或父类(super class)属性中,也没有在它之前使用 '_',它如何被初始化并接受为参数?

在init()函数中(第68行),在classTriangleAndSquare中,为什么需要参数标签size到被初始化,以及它如何被接受为参数,即使它不是任何子类(包括该类本身)或父类(superclass)中的属性?还有size如何被接受为一个参数(第69和70行),对于类型Square:NameShape(第14行)在它的init()函数(第17行),当classSquare:NameShape甚至没有size作为其属性之一时[size也不是在父类(superclass)中:NameShape(第1行)],也没有在“classSquare:NameShape”中初始化?在clas

swift - @objc'只能应用于类的扩展,从swift调用扩展方法到objective c

我正在创建类似的字符串扩展@objcextensionString{staticfuncclassName(_aClass:AnyClass)->String{returnNSStringFromClass(aClass).components(separatedBy:".").last!}funclocalize()->String{returnNSLocalizedString(self,comment:"")}}我正在像swift一样快速使用它btnReferencePhoto.setTitle("ADDREFERENCEPHOTO".localize(),for:.normal

ios - Objective-c 中的 class_replaceMethod 不适用于 Swift 类

当一些Objective-c代码检查swift类时,我遇到了一个问题,我可以获得该类的原始方法,但每当我设置该项目时,它都会导致该方法从该类中删除。我假设我的IMP不符合swift类所需的规范,但我在网上找不到太多帮助。我的简单例子如下:+(void)injectPropertyTrapsFor:(NSString*)propNamereader:(IMP)rwriter:(IMP)wtypeEncoding:(constchar*)type{IMPoldMethod=class_replaceMethod([selfclass],NSSelectorFromString(propNa

objective-c - 如何从 lldb 中的 objc 访问快速便利变量?

我正在尝试在swift上下文中设置一些方便的变量并从ObjC上下文访问它。​​(lldb)expression-lswift--var$answerSwift=42(lldb)expression-o-lswift--$answerSwift42(lldb)expression-o-lobjc--$answerSwifterror:useofundeclaredidentifier'$answerSwift'反之亦然:(lldb)expression-lobjc--int$answerObjc=42(lldb)expression-o-lswift--$answerObjc42如何将值

swift - Xcode 10.2 将多个目标转换为 Swift 5 : Tries to compile some classes that are not part of target

我有一个包含多个目标的iOSSwift项目。将第一个目标转换为Swift5很容易。将第二个目标转换为Swift5,Xcode10.2尝试编译显然仅存在于第一个目标中的文件并失败(因为它没有编译第一个目标的所有文件并提示未解析的标识符)。我该怎么做才能让Xcode仅编译那些在转换为Swift5时属于目标的文件?如何将我的项目转换为Swift5?清理Build文件夹并重新启动Xcode10.2没有帮助。 最佳答案 我刚刚经历了这个过程,并且能够从迁移指南最后一句话的提示中找出一个相当简单的解决方案https://swift.org/mi

xcode - Swift Compiler 正在尝试编译 ObjC

从昨晚开始我就一直在研究Swift,我遇到了一些奇怪的事情。我在我的Swift项目中包含了一些ObjC类——使用桥接头。但是,当我尝试构建该项目时,Swift编译器会报错,因为从表面上看,它正在尝试编译ObjC代码。我在这里缺少一个步骤吗?有没有其他人遇到过这个问题并找到了解决方案?我已经搜索了文档,但无济于事。 最佳答案 事实证明这是我的一个愚蠢的疏忽。许多第三方ObjC库/代码不包括Foundation——假设它已经存在。当然,在Swift中,情况并非如此。一旦我添加了#import到我导入的header,一切都很好。

没有objc的协议(protocol)中的Swift可选方法

我知道,在Swift协议(protocol)中制作一些方法需要使用@objc协议(protocol)。问题是,我不能使用objectivec方式,因为我在协议(protocol)中有一个方法,它返回一个Swift结构。所以我得到了错误,我不能使用@objc协议(protocol),因为我的方法返回一个结果,它不能在objective-c中表示。不幸的是,我绝对想使用可选的方法,因为有两种方法,它们是可选的,我的类的用户应该选择他想使用的方式。 最佳答案 在这种情况下,我所做的是返回一个包装Swift结构的类(与Objective-C

class - 在泛型类中使用泛型协议(protocol)

我定义了一个协议(protocol)LLNodeType:protocolLLNodeType{typealiasTvarfirstNode:LLNode?{get}}LLNode只是一个简单的泛型类,它包含一个类型为N的存储属性.classLLNode{varcontent:N...}为了符合LLNodeType因此我扩展了协议(protocol)LLNode如下:extensionLLNode:LLNodeType{typealiasT=NvarfirstNode:LLNode?{returnself}}我还定义了一个泛型类LLLinkedList包含一些使用通用类型的属性和函数L

class - 在子类中覆盖返回协变类型的下标

我有一个类叫做LLLinkedList,它定义了一个subscript:classLLLinkedList{//otherproperties,functionsandinitializers...subscript(range:Range)->LLLinkedList{get{//returnsomething}set{//setsomething}}}现在subscript显然需要Range并返回LLLinkedList.我还定义了LLLinkedList的子类称为LLArray:classLLArray:LLLinkedList{//otherproperties,functio

ios - 如何使用 getData() 在 Swift 中使用 ObjC PNChart 库绘制折线图?

我是一名新手程序员,最近开始学习Swift。我正在Swift中制作一个项目,我的目的是在引入参数的同一View中绘制用户引入的信号函数(使用由类PNLineChart控制的subview)。事实上,我使用CocoaPods安装了PNChart库,使用了ObjectiveCheader的桥接header。问题是在ObjC中使用类和方法的方式是将它们“翻译”成Swift语法。我发现PNChart有作者制作的Swift实现,但Pods不可用(如果有人知道如何将它们放入我的项目中,这也会有所帮助)。好吧,作者在其wiki中给出的绘制数组图的ObjC代码如下:#import"PNChart.h"