JMI*_*JMI 7 introspection ios swift
是否可以检测是否定义了某些全局函数(非类方法)(在iOS中)?像respondsToSelector课堂上的东西......
Swift目前不支持查找全局功能.
对于C函数(Apple的框架中的大多数全局函数都是C函数),至少有两种方法:
dlopen如果可以找到符号,则动态检查(在运行时).
这是一个检查是否UIGraphicsBeginImageContextWithOptions(iOS 4引入)可用的示例:
void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) __attribute__((weak));
static inline BOOL hasUIGraphicsBeginImageContextWithOptions() {
return UIGraphicsBeginImageContextWithOptions != NULL;
}
Run Code Online (Sandbox Code Playgroud)
这是相同的检查,使用dlsym:
#import <dlfcn.h>
static inline BOOL hasUIGraphicsBeginImageContextWithOptions() {
return dlsym(RTLD_SELF, "UIGraphicsBeginImageContextWithOptions") != NULL;
}
Run Code Online (Sandbox Code Playgroud)
使用的优点dlsym是您不需要声明,并且它可以轻松移植到Swift.
| 归档时间: |
|
| 查看次数: |
327 次 |
| 最近记录: |