【问题标题】:Access SpringBoardServices.h method in objective-c?在objective-c中访问SpringBoardServices.h方法?
【发布时间】:2014-10-09 00:38:45
【问题描述】:

我下载了 SpringBoardServices 中提供的 SpringBoardServices.h 文件并将其添加到我的项目中。但是如何访问 SpringBoardServices.h 文件中存在的方法之一。我正在尝试从 MyClass.m 文件中调用 BOOL SBSProcessIDForDisplayIdentifier(CFStringRef identifier, pid_t *pid); 此方法存在于 SpringBoardServices.h 中。如何从我的 .m 文件中调用上述方法?

我使用了以下方法,但它返回 null。
类 myclass= NSClassFromString(@"SpringBoardServices");
NSLog(@"myclass %@", myclass); //null
id myobj = [[myclass alloc] init];

我从link 下载了 SpringBoardServices.h 文件。

【问题讨论】:

  • 你知道c和objective-c的区别吗?

标签: ios objective-c iphone-privateapi


【解决方案1】:

有几种方法可以从私有框架中访问 C 方法:

方法一:

  • 链接私有框架(类似于链接公共框架的方式)
  • 包含 .h 文件
  • 打电话:

SBSProcessIDForDisplayIdentifier(...)

方法二:

  • 使用 dlopen 在运行时加载框架
  • 使用 dlsym 查找方法
  • 打个电话

顺便说一句。这适用于 C 方法,第二种方法不适用于 ObjectiveC 方法。

【讨论】:

  • 我尝试了方法1。但是它给出了“Typedef redefinition with different types”错误。
  • 它在哪里显示?我记得,在 class-dump-z 生成 .h 文件后,我必须对它们进行一些清理。例如,我必须删除类似“#import
猜你喜欢
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多