如何在iOS中加载新生成的私有API头?

如何在iOS中加载新生成的私有API头?,ios,iphone-privateapi,Ios,Iphone Privateapi,我在iOS中是哑巴,尤其是在私有API中 我有一个用于测试的应用程序,现在我需要使用私有API(这个应用程序不用于App Store) 我从下载了生成的标题,接下来呢 在/System/Library/下,我列出了包含框架的库的列表私有框架 是否需要将原始框架替换为从iOS运行时标题复制的框架?? 因为我有其他只使用公共API的应用程序,我不想损坏它们 从发布的链接中,他们告诉验证库,例如: NSBundle *b = [NSBundle bundleWithPath:@&qu

我在iOS中是哑巴,尤其是在私有API中

我有一个用于测试的应用程序,现在我需要使用私有API(这个应用程序不用于App Store)

我从下载了生成的标题,接下来呢

/System/Library/
下,我列出了包含
框架的库的列表<代码>私有框架

是否需要将原始框架替换为从
iOS运行时标题复制的框架?

因为我有其他只使用
公共API
的应用程序,我不想损坏它们

从发布的链接中,他们告诉验证库,例如:

NSBundle *b = [NSBundle 
        bundleWithPath:@"/System/Library/PrivateFrameworks/GAIA.framework"];
BOOL success = [b load];
但这里的路径指向原始路径

或者我错过了什么


谢谢

不要替换任何文件。相反,用您想要使用的符号编写一个头文件。如果需要Objective-C方法,请添加具有唯一名称的类别,例如

@interface NSString (MyOwnPrivateCategory)
- (void) privateMethodDeclaredInRuntimeHeaders;
@end
导入它并使用您喜欢的方法


给出的示例代码显示了如何在运行时加载框架,以防您不想链接到它。由于某些框架是私有的,它们可能不适用于所有版本的iOS。

首先,不要替换苹果提供的任何标题

一般来说,它是通过以下两种方式之一完成的:

1) 您可以将其中一些头文件复制到项目中,并以与包含其他头文件相同的方式包含这些文件

#import "SomeHeader.h"
2) 有时你必须对它们进行一点消毒(编辑)。通常,这些标题中有类似的内容:

#import "NSObject.h"
compliller将无法找到它,因为NSObject是内置类。所以,你需要像这样移除这个

3) 如果你只需要几个方法,Tuukka-Nori解决方案是正确的


除此之外,您还需要(静态或动态)链接到适当的私有框架(仅包含标题是不够的)。

通常,我希望使用私有API使设备进入睡眠状态。我知道它并没有提到我的问题,但我在大多数问题中看到你们的答案都是关于私有API的。你知道去哪里找合适的标题吗?因为今天大多数答案都不相关(我使用6.1)。非常感谢。anyways@fessy:我甚至找不到一个完全可以在ios 6.x上运行的解决方案。所有这些DimScreen和BlankScreen只是部分调暗屏幕(其中没有一个完全关闭屏幕)。所以,我不确定。你可以尝试反向工程跳板和搜索那里。然而,它可以受到某种权利的保护。