2017-07-05 6 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でこれを達成する良い方法はありますか?ありがとうございました! OBJ-Cと迅速間のブリッジングのために

+1

は、例えばhttps://stackoverflow.com/a/3835935/1187415を参照してください参照を渡す&を使用してそれを呼びたい:に*あなたは*のポインタを渡すことができますC. –

+0

まず、非常に良い理由がない限り、 'inout'パラメータを避けますが、Objective-Cでは(Cのように)変数へのポインタを渡します。 – Paulw11

答えて

2

、あなたはクラスであなたの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

ああ良いキャッチ。私は小さなSOエディタで最高のコードを書いていません^ __ ^ – chedabob

関連する問題