草庐IT

objc_unretainedPointer

全部标签

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

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

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 - 为什么 Apple 可以声明不带@objc 的可选协议(protocol)函数和无主可选变量,而我不能?

我不确定如何在swift中声明委托(delegate)。所以我检查了Apple的UITableView的代码(通过命令+单击XCode中的UITableView),发现了一些奇怪的东西。以下是UITableView委托(delegate)的声明:代表是一个unowned(unsafe)optionalvalue,但是根据Apple'sdoc:据说anunownedreferenceisassumedtoalwayshaveavalue但是,委托(delegate)当然可以为nil,即没有值。事实上,委托(delegate)被声明为UITableViewDelegate?,这是一个可选值

objective-c - 查看 Objc 文件的 swift 界面

我在一个混合的ObjCSwift项目中工作。我目前正在覆盖在swift子类中用ObjC编写的函数。我想知道是否有一种快速的方法来查看自动生成的objC文件的Swift头文件,以便我可以在函数转换为swift后检查函数的语法。 最佳答案 I'mwonderingifthereisaquickwaytoviewtheautogeneratedSwiftheaderfilesfortheobjC在跳转栏第一个菜单中切换到生成的界面。示例:之前:之后: 关于objective-c-查看Objc文

Swift 2.0 复制 OBJC_ASSOCIATION_RETAIN

我正在扩展Swift2.0中的一些类以使用ReactiveCocoa3.0(swift-2.0分支),但遇到了一些麻烦。我关注了ColinEberhardt'stutorial,并复制粘贴了他的一些UIKitextensionlogic转到我的OSX应用程序。除了这个属性之外,它都编译得很好:UInt(OBJC_ASSOCIATION_RETAIN),这给了我以下编译器错误。useofunresolvedidentifier如何访问此属性?我试过importObjectiveC和#import在头文件中,但似乎没有任何效果。funclazyAssociatedProperty(host

ios - 为什么,将 nil 作为参数从 Objc C 发送到 swift 类初始值设定项,用新对象替换 nil 参数

我创建了这个Swift类:@objcpublicclassTester:NSObject{privatevarname:Stringprivatevaruser:Usersinit(string:String,user:Users){print(user.empId)print(user.name)self.user=userself.name=stringsuper.init()}}我这样从ObjC调用初始化程序:-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDiction

ios - 在 Swift 中使用 Comparable 扩展 @objc 协议(protocol)

我正在尝试使用Comparable扩展我的协议(protocol)Option以使用简单的.sort()方法。下面的简短示例仅使用Equatable来显示错误。@objcprotocolOption:Equatable{vartitle:String{get}varenabled:Bool{get}varposition:Int{get}}func==(lhs:Option,rhs:Option)->Bool{returnlhs.position==rhs.position}Option协议(protocol)必须标记为@objc或继承自NSObjectProtocol因为它将与UIK

Pod install 报错 Undefined symbol: _OBJC_CLASS_$_xxx 的解决方法

背景:更换新电脑后,将旧电脑数据迁移同步到新电脑,处于异常报错,由于项目为Flutter混合项目,在connectivity文件报错报错:以前运行报错Undefinedsymbol:OBJC_CLASS$_xxx时,通常都是找不到相应文件的路径导致,解决办法就是去BuildSettings中的文件引用CompileSources中重新引用文件,再次podinstall即可。此方案无效,想想环境区别在于,新电脑是M1的新款M1的电脑运行时,所有pod的引用文件都报错,无法找到相应文件,需要更改pod的运行的BuildSettings才可以处理方案:1、新增arm64架构Project->Buil

ios - -all_load 和 -ObjC 之间的区别

-all_load与-ObjC有何不同。在我的项目中,两者的行为方式相同。 最佳答案 -对象此标志导致链接器加载库中定义Objective-C类或类别的每个目标文件。-all_load对于64位和iPhoneOS应用程序,有一个链接器错误会阻止-ObjC从仅包含类别而没有类的静态库中加载对象文件。解决方法是使用-all_load或-force_load标志。-all_load强制链接器从它看到的每个存档中加载所有目标文件,即使是那些没有Objective-C代码的文件引用BuildingObjective-Cstaticlibrar