【发布时间】:2012-03-01 12:49:17
【问题描述】:
我目前正在为 iPad 应用程序开发“设备内”(不是模拟器)监控系统。系统应该能够执行以下操作:
-用户输入模拟:模拟用户输入:点击、拖动、键盘。
-信息回忆:输入后获取文本值和结果。
此信息稍后会报告给事件管理服务器。通过使用来自 KIF 软件https://github.com/square/KIF 的一些代码和一些自行开发的代码,我已经在一个应用程序中处理了这两点。我使用 UIView 对象的 accessName 属性来获取它们的指针并将人工事件发送到 [[UIApplication sharedApplication] sendEvent:] 方法。
事情是这样的:我需要将这些事件从我所在的 app#1 发送到 app#2。 (为了保持监控的独立性,也不能在 app#2 中嵌入所有代码)我使用 [[UIApplication sharedApplication] openURL:] 方法打开 app#2。 https://developer.apple.com/library/IOs/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW18
问题是,我无法将事件从 app#1 发送到 app#2,因为我似乎无法在 app#1 代码中获取指向 app#2 的 [UIApplication sharedApplication] 对象的指针。
进程之间的共享内存通信会很好,但根据我发现的信息,URL 消息传递方案似乎是 iOS 中应用程序(或进程)之间的唯一通信。 iOS 中也不存在 NSConnection 类。我还阅读了一些关于 Mach 端口和 POSIX 文件描述符的信息,但它们看起来相当复杂,我不知道它们是否能提供帮助。
我什至尝试将 app#2 [UIApplication sharedApplication] 实例的指针值作为字符串参数发送到 URL 消息中,然后将字符串转换回 app#1 中的指针,但得到了 EXC_BAD_ACCESS。我想指针地址在两个进程中并不相同。也许每个过程都有自己的“偏移量”? 任何帮助将不胜感激。
【问题讨论】:
标签: iphone objective-c ios ipad