【发布时间】:2015-03-19 17:53:51
【问题描述】:
首先 - 我知道私有框架/API 不会让我进入 AppStore,这仅供私人使用/研究。
我无法使用ChatKit.framework 编译我的项目。
基本上我需要以某种方式初始化一个CKDBMessage 对象并从中获取内容。
我尝试的 first 方法是能够调用它:
CKDBMessage* msg = [[CKDBMessage alloc] initWithRecordID:lastID];
NSLog(@"GOT SMS: %@", msg.text);
我无法使用这些解决方案的任何组合对其进行编译:
- 只需将
CKDBMessage.h添加到我的项目中 - 添加
ChatKit.framework的所有标头 - 还要添加
ChatKit.framework文件本身
我在Headers 文件夹中有标题和框架文件,我尝试添加任何/所有这些构建设置,都在递归/非递归上:
- 框架搜索路径 ->
$(PROJECT_DIR)/Headers - 标题搜索路径 ->
$(SRCROOT)/Headers/ChatKit.framework/Headers$(SRCROOT)/Headers
- 用户标题搜索路径->
$(SRCROOT)/Headers$(SRCROOT)/Headers/ChatKit.framework/Headers
始终搜索用户路径始终为“是”
我尝试的第二件事是在运行时做所有事情,这就是我所拥有的:
Class CKDBMessage = NSClassFromString(@"CKDBMessage");// objc_getClass("CKDBMessage");
SEL sel = @selector(initWithRecordID:);
NSMethodSignature *signature = [CKDBMessage methodSignatureForSelector:sel];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
invocation.selector = sel;
[invocation setArgument:&lastID atIndex:2];
[invocation invoke];
NSObject * msgWeak = [CKDBMessage alloc];
[invocation getReturnValue:&msgWeak];
NSObject *msg = msgWeak;
NSString *text = [msg performSelector:@selector(text)];
NSLog(@"text: %@", text);
这里我在invocationWithMethodSignature: 崩溃,因为 NSClassFromString 返回 nil 而不是类...
对这两种方法有什么想法吗?
这是未越狱的,iOS8(.2),使用 Xcode6
【问题讨论】:
标签: ios objective-c iphone xcode6 iphone-privateapi