2017-07-05 27 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

相关问题