我正在使用SIMBL调整NSMenuItems的第三方应用程序创建方法,但是在我的方法调配初始化之前创建菜单项的时间是50/50。
什么是一种干净的方法来确保我的调酒始终是第一位的?我想我可以调整applicationDidFinishLaunching:继续我在那里的调整。但是我担心我会遇到同样的错误,在我的实际调酒到位之前将调用applicationDidFinishLaunching。
约翰
答案 0 :(得分:2)
你想要在加载库后立即发生混合。您可以通过+initialize
,+load
或构造函数执行此操作。
@ bbum的answer to this question提供了更多信息,以及one of his blog posts关于使用这些特殊类方法的警告。
(而且我故意不质疑你所做的事情的智慧;)
答案 1 :(得分:2)
您可以使用这样的构造函数:
__attribute__((constructor)) static void do_the_swizzles()
{
// Do all your swizzling here.
}
constructor
属性会调用该函数 执行前自动进入main()
。
注意:虽然这最初来自GCC
,但它也适用于LLVM
。