首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法Swizzling -如何确保方法在被调用之前被Swizzling

方法Swizzling -如何确保方法在被调用之前被Swizzling
EN

Stack Overflow用户
提问于 2011-01-13 08:22:20
回答 2查看 831关注 0票数 1

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

有什么干净的方法可以确保我的开胃酒总是排在第一位?我想我可以喝applicationDidFinishLaunching:然后继续喝。但我担心我会在那里遇到同样的错误,在我实际的swizzle就位之前,applicationDidFinishLaunching将被调用。

约翰

EN

回答 2

Stack Overflow用户

发布于 2011-01-13 08:45:37

您可能希望在装入这些库后立即执行swizzle。您可以通过+initialize+load或构造函数来执行此操作。

@bbum的answer to this question有更多信息,以及one of his blog posts关于使用这些特殊类方法的注意事项。

(我特意不会质疑你所做的事情是否明智;)

票数 2
EN

Stack Overflow用户

发布于 2012-06-17 00:08:33

您可以像这样使用构造函数:

代码语言:javascript
复制
__attribute__((constructor)) static void do_the_swizzles()
{
    // Do all your swizzling here.
}

来自GCC documentation

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

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

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

https://stackoverflow.com/questions/4675546

复制
相关文章

相似问题

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