HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 检查Swift中是否存在全局函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以检测是否定义了某些全局函数(非类方法)(在iOS中)?像课堂上的respondsToSELEctor …

解决方法

Swift目前不支持查找全局功能.

对于C函数(Apple的框架中的大多数全局函数都是C函数),至少有两种方法

>使用弱链接符号
>动态链接器API:dlopen

如果可以找到符号,则动态检查(在运行时).

这是一个检查UIGraphicsBeginImageContextWithOptions(iOS 4引入)是否可用的示例:

void UIGraphicsBeginImageContextWithOptions(CGSize size,BOOL opaque,CGFloat scalE) __attribute__((weak));

static inline BOOL hasUIGraphicsBeginImageContextWithOptions() {
    return UIGraphicsBeginImageContextWithOptions != NULL;
}

这是使用dlsym的相同检查:

#import <dlfcn.h>

static inline BOOL hasUIGraphicsBeginImageContextWithOptions() {
    return dlsym(RTLD_SELF,"UIGraphicsBeginImageContextWithOptions") != NULL;
}

使用dlsym的优点是你不需要声明,并且它可以轻松移植到Swift.

大佬总结

以上是大佬教程为你收集整理的ios – 检查Swift中是否存在全局函数全部内容,希望文章能够帮你解决ios – 检查Swift中是否存在全局函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。