gpt4 book ai didi

objective-c - Cast ObjectiveC int 和 swift Int(使用变量从 Objective-c 调用 Swift 方法)

转载 作者:搜寻专家 更新时间:2023-11-01 06:16:22 25 4
gpt4 key购买 nike

我正在从 ObjectiveC 调用 Swift 函数

这些是我的简单代码

在我的 Objective-C 代码中

// mySwift class is put in delegate
[delegate testFunc]; // works well
int now = 10;
[delegate showCount:now]; //compile error

在我的快速代码中

class mySwift {
func showCount(nowpos: Int){
// my code
}
func testFunc(){
// it works well
}

我无法用这条消息编译它。

myObjC.m:171:19: No known instance method for selector 'showCount:'

如果我不使用变量(Make testfunction without variable),它运行良好。

我猜是因为Type (Int, and int)

我该如何解决这个问题?

最佳答案

你是对的

If I don't use the variable(Make test function without variable), it works well.

但让我们了解一下为什么?

在 Swift 中,函数参数有两部分,即 labelparameter

 func showCount(nowPostion nowpos: Int) {}

在上面的函数中,标签是nowPositionnowpos参数。这种区别的用途是函数调用者使用 label,而函数内部使用 parameter

     showCount(nowPostion: 50) // calling function using label

但是,如果我不提供 label,则 parameter 将被视为 label,因此当您调用该函数时从 Objective-C 中,它无法找到此方法。

    [delegate showCount:now];

此外,在 Objective-C 中,无法在方法调用中提供 parameter 名称。因此,我们必须使用 _ 在 Swift 定义中调整它。

   func showCount(_ nowpos: Int)

上面的定义说调用这个函数时不需要label

   func showCount(50) // This will work now

在使用 Objective-C 和 Swift 互操作时有一些注意事项。

关于objective-c - Cast ObjectiveC int 和 swift Int(使用变量从 Objective-c 调用 Swift 方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44093341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com