我需要在
Cocoa中使用“signatureWithObjCTypes:”构造一个任意的NSMethodSignature,而没有一个我可以通过“methodSignatureForSelector:”请求签名的对象.
为此,我需要方法编码,例如,是
c12@0:4@8
对于
(BOOL) isEqual: (id) object
我尝试使用@encode(…)来获取类型编码,但这似乎不适用于函数(它导致未知类型’?’).我不想手动编码函数类型,因为它不能在不同的运行时间移植.
问候,
约亨
解决方法
怎么样的:
#import <objc/runtime.h> //inside the method implementation: Method thisMethod = class_getClassMethod([self class],_cmd); const char * encoding = method_getTypeEncoding(thisMethod);
或者对于任意方法:
#import <objc/runtime.h> //inside the method implementation: Method thisMethod = class_getClassMethod([self class],@selector(isEqual:)); const char * encoding = method_getTypeEncoding(thisMethod);
原文地址:https://www.jb51.cc/c/110798.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。