gpt4 book ai didi

ios - NSMethodSignature 和 NSInvocation 等价于 swift 2

转载 作者:行者123 更新时间:2023-11-28 06:45:59 29 4
gpt4 key购买 nike

我如何在 swift 2 中编写这个类? NSMethodSignature 和 NSInvocation 在 swift 2 中不再存在

@implementation MyAuth

- (void)authorizeRequest:(NSMutableURLRequest *)request
delegate:(id)delegate
didFinishSelector:(SEL)sel {
if (request) {
NSString *value = [NSString stringWithFormat:@"%s %@", GTM_OAUTH2_BEARER, self.accessToken];
[request setValue:value forHTTPHeaderField:@"Authorization"];
}

NSMethodSignature *sig = [delegate methodSignatureForSelector:sel];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig];
[invocation setSelector:sel];
[invocation setTarget:delegate];
[invocation setArgument:(__bridge void *)(self) atIndex:2];
[invocation setArgument:&request atIndex:3];
[invocation invoke];
}

- (void)authorizeRequest:(NSMutableURLRequest *)request
completionHandler:(void (^)(NSError *error))handler {
if (request) {
NSString *value = [NSString stringWithFormat:@"%@ %@", @"Bearer", self.accessToken];
[request setValue:value forHTTPHeaderField:@"Authorization"];
}
}

提前致谢

最佳答案

NSInvocation 在 Swift 中不可用。但是,在这种情况下,NSInvocation 实际上不是必需的。从您设置参数的方式我们知道您总是要调用具有两个参数对象指针类型的方法。 (假设您的意思是 &self 而不是索引 2 的 self。)您可以使用 performSelector:withObject:withObject: 来做到这一点。

[delegate performSelector:sel withObject:self withObject:request]

这在 Swift 2 中可用:

delegate?.performSelector(sel, withObject:self, withObject:request)

附言这真的很奇怪,因为看起来你有另一个版本的方法需要一个完成处理程序,这对 Swift 来说是完美的,除了主体似乎不完整,而且完成处理程序的类型不正确,因为它不正确接受请求。

关于ios - NSMethodSignature 和 NSInvocation 等价于 swift 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36345815/

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