gpt4 book ai didi

objective-c - Swift 中的 NSMethodSignature

转载 作者:搜寻专家 更新时间:2023-11-01 05:49:17 24 4
gpt4 key购买 nike

在 ObjC 中我有:

NSMethodSignature *ms = [[object.target class] instanceMethodSignatureForSelector:object.selector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:ms];

在 Swift 中我得到错误:

'NSObject' does not have a member named 'instanceMethodSignatureForSelector'

当我尝试这样做时:

var ms:NSMethodSignature? = (object.target.dynamicType as NSObject).instanceMethodSignatureForSelector(object.success)

最佳答案

Swift 中没有调用。但也许你从来不需要在这里调用:

NSMethodSignature *ms = 
[[object.target class] instanceMethodSignatureForSelector:object.selector];

因此,在某个时候,您使用targetselector 形成或访问了一个对象(object)。这表明您当时可以形成一个闭包,在该闭包中您可以在该目标上调用该方法。例如:

let clos = {() -> () in object.someMethod(); return; }

现在您有一个() -> () 类型的值clos,您可以存储、传递等等。到时候,你就叫它:

clos()

或者,根据情况,您可以直接存储对该方法的引用:

let funcref = object.someMethod

同样,您可以稍后调用它:

funcref()

既然我们拥有作为一等语言公民的闭包和函数,那么在许多情况下,Objective-C 的活力将变成不再需要的拐杖。

如果你发现你真的、真的需要它,Objective-C 并没有消失,你可以将它混合到你的项目中。

关于objective-c - Swift 中的 NSMethodSignature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24158859/

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