首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Theos/Logos:跨多个挂钩进程访问静态/全局变量

Theos/Logos:跨多个挂钩进程访问静态/全局变量
EN

Stack Overflow用户
提问于 2015-01-20 16:34:12
回答 1查看 1.1K关注 0票数 0

当然,我对调整开发非常陌生,但我遇到了一个问题。我正在进行一项针对个人使用的调整,即将钩子连接到多个进程中,但在这些特定于进程的钩子之间共享一个变量时遇到了困难。例如,我的SpringBoard方法挂钩可以设置静态变量的值,然后访问值集。但是,特定于应用程序的方法钩子无法检索SpringBoard方法上下文中的值集。变量未初始化返回。

由于调整库很常见,我如何在一个进程的钩子上下文中初始化一个“全局”库级变量,并在另一个进程的上下文中访问该值。

我的第一次尝试是这样的:

代码语言:javascript
复制
static BOOL isEnabled;

%hook FirstProcessFirstClass

- (void) methodInFirstProcessFirstClass {
    isEnabled = YES;
    %orig;
}

%end

%hook FirstProcessSecondClass

- (void) methodInFirstProcessSecondClass {
    // This will be 1 if it occurs after methodInFirstProcessFirstClass
    NSLog("isEnabled equals %d", isEnabled);
    %orig;
}

%end

%hook SecondProcessClass

- (void) methodInSecondProcessClass {
    // This is always going to be uninitialized (i.e., 0)
    NSLog("isEnabled equals %d", isEnabled);
    %orig;
}

%end

如果您看到了这张图片,我想在挂接进程之间共享一个“全局变量”。谢谢你逗我开心。:/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-20 17:36:06

在进程之间共享一个变量比只拥有一个全局变量要复杂一些。您需要使用某种形式的IPC (进程间通信)来同步跨进程的变量。因为您连接了SpringBoard 其他应用程序,所以可以将SpringBoard设置为“服务器”,以便将变量的新状态发送到其他进程。

您还可以使用%group指令,根据您的调整实际上挂起的进程来应用钩子,这样SpringBoard的钩子只能在SpringBoard进程中活动,而不是在应用程序上活动。这不会有太大变化,但不会有不必要的挂钩。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28050523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档