How can method in Swift with inout parameter be used in Objective-C?

后端 未结 2 898
孤街浪徒
孤街浪徒 2021-02-19 01:18

I want

func foo(inout stop: Bool) -> Void {
    // ...
}

use in my Objective-C part. But it is never generated in Module-Swift.h header. If

2条回答
  •  耶瑟儿~
    2021-02-19 01:56

    Similarly to what happening with generics, inout is not objc-compatible.

    One possible workaround is to embed your parameter(s) in a class (which is a reference type, hence passed by pointer and not by value):

    @objc class MyFuncParams {
        var stop: Bool
    
        init(stop: Bool) {
            self.stop = stop
        }
    }
    

    and define the function to accept an instance of that class:

    func changeParam(params: MyFuncParams) {
        params.stop = true
    }
    

    Not an elegant way to solve the problem, but what's important is that it should work (never tried myself though).

提交回复
热议问题