1

我正在使用 SIMBL 调配第三方应用程序创建 NSMenuItems 的方法,但是在初始化我的方法调配之前创建菜单项的时间有 50/50。

什么是确保我的调酒总是第一位的干净方法?我想我可以调配 applicationDidFinishLaunching: 并继续我的调配。但我担心我会在那里遇到同样的错误,在我的实际调酒到位之前将调用 applicationDidFinishLaunching。

约翰

4

2 回答 2

2

您可以使用如下构造函数:

__attribute__((constructor)) static void do_the_swizzles()
{
    // Do all your swizzling here.
}

来自GCC 文档

constructor属性使函数在执行进入之前被自动调用main()

注意:虽然这最初来自GCC,但它也适用于LLVM.

于 2012-06-16T16:08:32.523 回答
2

您希望在加载库后立即进行调酒。您可以通过 、 或构造函数来做到这+initialize一点+load

@bbum对这个问题的回答有更多信息,以及他的一篇关于使用这些特殊类方法的注意事项的博客文章

(而且我故意不质疑你所做的事情的智慧;))

于 2011-01-13T00:45:36.713 回答