2017-07-05 26 views
3

我重新編寫Objective-C代碼,試圖找到Objective-C中Swift的inout參數表示法的等價物。什麼是Objective-C相當於Swift的inout參數?

func swapTwoInts(_ a: inout Int, _ b: inout Int) { 
    let temporaryA = a 
    a = b 
    b = temporaryA 
} 

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-ID158

到目前爲止,我已經學會了:1.inout不objc兼容。 2.objc根本沒有這樣的語言功能。

但是,當我設計我的API時,我希望清楚這個方法正在修改它的參數。在Objective-C中有沒有什麼好的方法可以實現這一點?謝謝!

+1

見https://stackoverflow.com/a/3835935/1187415了一個例子:你可以通過*指針在* C. –

+0

首先,除非你有一個很好的理由,否則應避免'inout'參數,但在Objective-C中(如在C中),你可以傳遞一個指向變量的指針。 – Paulw11

回答

2

對於OBJ-c和SWIFT之間的橋接,你可以把你的PARAMS的一類,並通過在:https://stackoverflow.com/a/26288083/78496

您可以的OBJ-C之類的做INOUT,你只是沒有看到它很經常。

- (void) doThing: (int *) varA andAnother:(int *) varB 
{ 
    int temp = *varA; 
    *varA = *varB; 
    *varB = temp; 
} 

然後,你把它用&通過參考

int i = 1; 
int j = 2; 
[self doThing:&i andAnother:&j] 
+1

你的方法不能編譯。什麼是'int * temp =&i;'應該這樣做? –

+0

啊好抓。我不會在小編輯編輯器^ __ ^中編寫我的最佳代碼 – chedabob

相關問題