gpt4 book ai didi

objective-c - 在 Swift 中使用外部参数名称时的方法签名是什么

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:12 24 4
gpt4 key购买 nike

我在我的 Swift 代码中使用了一个 NSTimer 对象,它需要将方法签名传递给它的“选择器”参数,以便循环执行所述方法。当方法签名没有外部参数名称时,即

func timerMethod(internal: String) { ... }

我可以将这个签名传递给定时器对象:

var timer = NSTimer.scheduledTimerWithTimeInterval(1.0,
target: self,
selector: Selector("timerMethod:"),
userInfo: userInfo,
repeats: true)

但是,如果我给方法一个带有外部参数名的签名,比如:

func timerMethod(external internal: String) { ... }

我不知道如何调用该方法。我尝试使用以下方式记录它:

println("\(__FUNCTION__)")

记录以下内容:

timerMethod(external:)

但是每当我尝试这个或以下任何一个时,我都会收到“无法识别的选择器”异常:

timerMethod:
timerMethod:external
timerMethod:external:
timerMethod:(external)
timerMethod:(external:)
timerMethod(external):

暂时难过了。有人遇到过类似的事情吗?

最佳答案

它是 timerMethodWithExternal: 您可以使用 object_getClass(t).instancesRespondToSelector(Selector("timerMethodWithExternal:")) 进行测试

我用下面的代码来反省

func with(t: Test, inout count : CUnsignedInt) -> UnsafePointer<Method> {
var mc : CUnsignedInt = 0
return class_copyMethodList(object_getClass(t), &count)
}

var i=0
var mc : CUnsignedInt = 0
var t = Test()
var mlist = with(t,&mc)
var n : Int = Int(mc)
for (i=0; i<n;i++) {
println(sel_getName(method_getName(mlist[i])))
}

关于objective-c - 在 Swift 中使用外部参数名称时的方法签名是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24471432/

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