Ich möchte nur wissen, wie ich ein Array von Swift-Klasse zu Objective-C-Klasse als Referenz übergeben kann. Ich habe eine Idee für Swift nach Swift per Referenz unter Verwendung inout
Schlüsselwort. Aber wie ObjC selbst Zeiger als Objektnamen verwendet. Wie kann ich Swift informieren, das Objekt als Referenz anstelle von Value zu übergeben?Swift Pass-Array nach ObjectiveC-Methode
-Code Snipshot
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)];
}
Edit: Für rasche es funktioniert nach Methoden, wie verändert sich: Aber noch Objective C-Interaktion funktioniert nicht.
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)
}
Konvertieren Sie es einfach in 'NSMutableArray', wenn Sie an obj-c-Funktion – Tj3n
senden möchten, auch dies versucht. Aktualisierte Frage – Saad
übergibt es immer noch nach Wert. – Saad