gpt4 book ai didi

objective-c - 通过引用 ObjectiveC 方法快速传递数组

转载 作者:行者123 更新时间:2023-11-28 15:47:10 30 4
gpt4 key购买 nike

我只想知道如何通过引用将数组从 Swift 类传递到 Objective C 类。我通过使用 inout 关键字的引用将 Swift 转换为 Swift。但是由于 ObjC 使用指针本身作为对象名称。我如何通知 Swift 通过引用而不是值来传递对象?

代码截图

swift :

class CheckReference: NSObject {    
class func test() {

let array : NSMutableArray! = nil
ViewController.change(array) //ViewController.change(&array) doesn't work
print(array)//does not changed
}
}

Objective-C :

 + (void)changeArray:(NSMutableArray *)array
{
if(!array)
array = [NSMutableArray array];
[array addObject:@(2)];
}

编辑:对于 swift,它通过改变方法来工作:但是 Objective C 交互仍然不起作用。

class func test() {
var array : NSMutableArray! = nil
CheckReference.passByReference(arr: &array)
print(array ?? "nothing")//prints 2

}
class func passByReference(arr: inout NSMutableArray!)
{
arr = NSMutableArray()
arr.add(2)
}

最佳答案

好吧,我的猜测是,当您传递 nil 时,您没有传递指针,因为它没有指向任何东西,因此您之后的值不会改变。

如果你想传递nil,你可能需要改变函数返回一个指向新的NSMutableArray的指针,并赋值回array 在你的 swift 代码中

首先在 Swift 中创建 array 并传递给 Obj-c 确保对象已创建并传递正确的指针

关于objective-c - 通过引用 ObjectiveC 方法快速传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42856660/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com