2009-12-15 95 views
3

为了创建CoreGraphics开发的沙箱(目前为了达到预期的效果,它包括执行多次构建和运行尝试),我很好奇是否有办法在运行时动态加载类文件。动态加载类文件(Objective-C)

很像Java的类加载器的能力,我希望使用NSBundle或类似的东西动态地加载一个类到内存中。

这个想法是设置一个沙箱项目,只需要编译然后动态地重新加载类,而不必停止并重新运行主机应用程序。

+0

一篇描述动态包的文章:http://www.stone.com/The_Cocoa_Files/Dynamic_Bundles.html – 2009-12-15 07:19:15

回答

3

NSBundle可用于动态加载代码。看看-load

我不明白你为什么要重新加载这样一个包。 (你可以通过-unload-load。)感觉不对,唯一被再次调用的代码是+load+initialize。你只需要创建一个新的类的实例。

+0

我期望做的事实质上是在运行时引入一个包。卸载软件包并重新加载一个新软件包。我想要这样做,而不必停止并启动应用程序。 – 2009-12-16 18:28:14

+0

如果卸载时没有任何对该软件包的引用,则可以使用'-unload'。如果你有参考资料,我无法帮助你,但我在这方面还没有任何经验。也许你可以使用'CFBundle'使用CoreFoundation bundle支持来解决你的问题,这与'NSBundle'完全不同。 – 2009-12-17 05:22:05