通过名称访问 iOS SDK 常量(反射)

乌尔塞格

在 iOS SDK 内部,可以找到许多由 Apple 定义的常量,如下所示:

extern const CFStringRef kSomeReallyNiceConstant
    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_8_0);

如果我检查这种恒定标准方式的存在:

if (NULL == &kSomeReallyNiceConstant)

我几乎引用了它,为了让我的代码正确编译,在这种情况下,我至少需要 iOS SDK 8.0 或更高版本。

当涉及到对象和方法时,反射方法可以很好地与NSClassFromString,respondsToSelector一起使用performSelector

是否有机会使用某种反射(按名称访问字符串常量)来尝试获取它的值(如果它存在(或者如果不存在则没有)?

我知道我可以使用宏来检查 iOS 版本并根据该信息执行不同的代码路径,但我不想使用这种方法。

我设法用指针做到了这一点:

#include <dlfcn.h>

// ...

int *pointer = dlsym(RTLD_SELF, "kSomeReallyNiceConstant");

if (pointer) {
    NSLog(@"Thing exists!");
} else {
    NSLog(@"Nope, doesn't exist!");
}

但我不确定这是否会导致应用程序被拒绝。你可能知道吗?

不管这种指针方法如何,我都很想知道是否还有其他方法可以实现这一目标?

乌尔塞格

没有什么比在此主题上找到的建议解决方案更好的了。

#include <dlfcn.h>

// ...

int *pointer = dlsym(RTLD_SELF, "kSomeReallyNiceConstant");

if (pointer) {
    NSLog(@"Thing exists!");
} else {
    NSLog(@"Nope, doesn't exist!");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过反射访问枚举名称

来自分类Dev

如何在iOS SDK上通过给定的邮政编码(ZIP)获取国家名称

来自分类Dev

在PHP上通过自身名称或类名称访问常量之间的区别?

来自分类Dev

iOS 版本与 iOS sdk

来自分类Dev

如何防止通过反射访问?

来自分类Dev

在iOS中的Google Maps SDK中搜索名称包含的位置

来自分类Dev

如何从card.io SDK获取国家名称?-iOS

来自分类Dev

使用Fabric SDK iOS访问Twitter用户时间轴

来自分类Dev

Salesforce本机IOS SDK无法刷新访问令牌

来自分类Dev

适用于iOS的Facebook SDK访问令牌发行

来自分类Dev

适用于iOS的Dropbox Core SDK(使用访问令牌)

来自分类Dev

通过名称获取常量的值

来自分类Dev

通过PayPal iOS SDK进行的PayPal实时交易中的问题

来自分类Dev

iOS Facebook SDK通过图搜索来搜索用户

来自分类Dev

Thermodo iOS SDK

来自分类Dev

SoundCloud iOS SDK架构

来自分类Dev

CoreLocation或Estimote iOS SDK

来自分类Dev

iOS 8 Facebook SDK

来自分类Dev

Thermodo iOS SDK

来自分类Dev

谷歌地图 iOS SDK

来自分类Dev

通过反射访问/执行泛型方法?

来自分类Dev

java通过反射访问Integer构造函数

来自分类Dev

通过名称动态获取Ruby类常量

来自分类Dev

iOS FacebookSDK +解析SDK + GoogleMaps SDK

来自分类Dev

如何通过iOS SDK使用Facebook身份验证通过DynamoDB和Cognito存储用户信息

来自分类Dev

iOS中的CGImageDestinationCreateWithData常量

来自分类Dev

Swift / iOS SDK:具有类类型/名称关闭/块问题的泛型函数

来自分类Dev

Facebook iOS SDK(Graph API)无法访问公共页面信息

来自分类Dev

获取xmpp_login访问令牌在Facebook iOS SDK中不起作用