我正在寻找动态加载基于Obj C的源并在我的iOS应用程序中显示视图的可能性。例如:我有一组用于显示视图的代码,我想动态加载此代码并显示此视图。 有点像,
来自评论未在appstore中发布..其内部
这可能吗?
答案 0 :(得分:3)
简短回答:否
答案不是那么简短:
理论上你可以在你的项目中包含Cng或C ++接口到Clang编译工具链,让你的库编译你下载的代码,然后(通过NSBundle或与dlopen直接交互)链接编译代码进入你的应用程序。
在实践中,如果您要实现的目标是提交到App Store,则条款和条件明确禁止这样做。
答案 1 :(得分:2)
您无法在部署到应用商店时执行此操作。
您不会为此使用纯文本,而是使用捆绑包(NSBundle
)。捆绑包可以包含文件(图形,NIB)资源和代码,因此您可以创建视图类和任何关联的NIB,编译捆绑包然后将其存储在服务器上。然后,应用程序可以下载捆绑包并在运行时加载它。
答案 2 :(得分:1)
您可以为非应用商店应用执行此操作。我没有尝试过这种方法。
来自Apple Docs:
从外部捆绑中加载代码的关键是找到一个 适当的入口点到bundle的可执行文件中。和。一样 其他插件方案,这需要一些协调 应用程序开发人员和插件开发人员。你可以发表一个 用于捆绑包的自定义API,用于实现或定义正式插件 接口。在任何一种情况下,一旦你有一个合适的捆绑或 插件,你使用NSBundle类(或CFBundleRef opaque类型) 访问外部代码实现的函数或类。
加载Objective-C类如果您正在编写Cocoa应用程序, 你可以使用方法加载整个类的代码 一个NSBundle。用于加载类的NSBundle方法可用于 仅限Objective-C类,不能用于加载写入的类 C ++或其他面向对象的语言。