Objective c 具有块参数的方法的ObjC方法类型编码字符串
我在看书 苹果的,但我不明白如何编码一个块参数的方法 例如,我有:Objective c 具有块参数的方法的ObjC方法类型编码字符串,objective-c,objective-c-runtime,method-signature,Objective C,Objective C Runtime,Method Signature,我在看书 苹果的,但我不明白如何编码一个块参数的方法 例如,我有: - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler 我不明白如何使用(void(^)()completionHan
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler
我不明白如何使用
(void(^)()completionHandler
所有对象类型都是@
。因此,我希望如此,因为块是Objective-C中的对象
但是,如果有疑问,可以使用
方法\u getTypeEncoding()
询问运行时本身,使用@encode
指令:
typedef void(^CompletionHandler)(void);
char *encoded = @encode(CompletionHandler);
NSLog(@"Encoded: %s", encoded);
打印@?
要引用您的文档链接:
@对象(无论是静态类型还是类型id)? 未知类型(除其他外,此代码用于函数指针)
也许这会有帮助你到底想做什么?根据上下文的不同,答案会有所不同。
@encode()
发出的编码与编译器对方法发出的编码不同。这也许不能回答OP的问题。@bbum真的吗?我还尝试了方法\u getTypeEncoding()
,得到了相同的结果。@encode
不包括(现在是假的)堆栈偏移量。