我只是想知道如何通过引用将数组从Swift类传递给Objective C类。我使用inout
关键字通过引用了解Swift to Swift。但是因为ObjC使用指针本身作为对象名称。我怎样才能告知Swift通过引用传递对象而不是Value?
Code Snipshot
夫特:
class CheckReference: NSObject {
class func test() {
let array : NSMutableArray! = nil
ViewController.change(array) //ViewController.change(&array) doesn't work
print(array)//does not changed
}
}
目标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)
}
答案 0 :(得分:1)
好吧所以我的猜测是,当你传递nil
时,你没有传递指针,因为它没有指向任何东西,因此你之后的值不会改变。
如果您想传递nil
,则可能需要更改该函数以返回指向新NSMutableArray
的指针,并在快速代码中分配回array
首先在Swift中创建array
并传递给Obj-c,确保已创建对象并传递正确的指针