- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我如何在 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/
我最近开始为 IOS 开发并与调用对象作斗争。 我有一个类“Location”,派生自 NSManagedObject(它是 Coredata 模型的一部分) @interface Location
在 ObjC 中我有: NSMethodSignature *ms = [[object.target class] instanceMethodSignatureForSelector:object
我正在使用此方法将方法分派(dispatch)给委托(delegate),不幸的是,我发现大多数时候 NSMethodSignature 为 nil,这是因为选择器来自协议(protocol)。我想知
我需要一种方法来在运行时检查给定 block 的参数数量和参数类型(我目前正在编写的某些对象映射库需要这个,我正在将字符串格式的值映射到选择器,想要相同的 block )。 我尝试了以下示例中的代码,
我在使用 [NSMethodSignature getArgumentTypeAtIndex] 函数时遇到了非常奇怪的行为。它返回 BOOL 类型的“@”字符,根据 objective-c type
我正在尝试在协议(protocol)方法中获取 block 的签名。 这是一个示例协议(protocol): @protocol ProtocolSample - (void) doSomethin
我如何在 swift 2 中编写这个类? NSMethodSignature 和 NSInvocation 在 swift 2 中不再存在 @implementation MyAuth - (void
在苹果的 documentation这个方法的最后说了以下内容: 特殊注意事项 此方法自 Mac OS X v10.0 起可用,在 Mac OS X v10.5 中公开。仅支持应用程序运行所针对的运行
我在手机上运行以下代码,其中“对象”是猫,它是动物的子类。动物有一个属性“颜色”: NSLog(@"Object: %@", object); NSLog(@"Color: %@", [object
我是一名优秀的程序员,十分优秀!