在Cocoa应用程序运行后将代码注入到Cocoa应用程序中是否可能?

时间:2015-03-18 22:41:47

标签: objective-c macos cocoa

Apple的WebView和WKWebView假设你想与Safari共享cookie,而对于我正在构建的应用程序,我真的不想这样做。不幸的是,他们只使用你无法访问的单例NSHTTPCookieStorage而且它就是它。

我一直在考虑编写一个库来重新定义NSHTTPCookieStorage的部分内容并使用DYLD_INSERT_LIBRARIES来预先加载它,以便我可以从不同的位置读取和写入cookie。不幸的是,我们的应用程序的一部分是一个屏幕保护程序,它不是一个应用程序,而是一个由屏幕保护程序应用程序加载的库(如插件),所以当我获得控制时,它使用起来太迟了DYLD_INSERT_LIBRARIES。

还有其他方法可以实现这一目标吗?修改已加载的类?

2 个答案:

答案 0 :(得分:1)

是的,你可以这样做。 Objective-C运行时有一种表格,可以将selector name映射到selector implementation,您可以在运行时编辑该表。

您可以查看this library

答案 1 :(得分:1)