咨询:13529513104

曾有人谣传微软Windows 10平台将支持运行Android程序,没有人会预料到iOS应用也将得到同样的支持。目前,微软正结合C2和Clang使之变为可能。


编译器支持


谷歌和苹果都使用Clang作为他们的C++前端,微软将Clang与Visual C++编译器的后端C2结合,以此来支持在Windows上运行Android和iOS程序。


苹果的Objective-C同样使用Clang作为前端,所以一旦Clang与C2整合完成,他们也将获得解析并编译Objective-C的能力。


IDE支持


Visual Studio中的Objective-C支持语法高亮、代码补全、和代码调试功能。C++和C#文件可以被引入到相同的项目中,允许程序直接跨边界调用。编译器将处理所有封送工作,所以开发者只会看到普通的函数调用。


大多数Objective-C项目都以建立XCode项目开始,所以Visual Studio将支持导入XCode项目,VS和XCode项目文件可在混合模式项目中共存,因此可以在两种IDE中同时开发这个项目。


混合模式项目


Windows为Objective-C应用提供了新的API,例如:动态磁贴。为了确保可以继续在平台间共享代码,微软允许你在调用Windows API前通过运行时检查它们是否可用。或者, 你可以使用预处理器指令显式地隔离平台特定代码与共享代码。


运行时行为


Windows的Objective-C运行时默认通过检测应用原始平台来决定具体行为。举个例子:如果你移植某个iPhone应用,那么它将默认运行在一个小窗口中,而从iPad移植的应用将默认运行在常规大小的窗口中。


所有这样的行为可以在需要时被应用覆盖。


iOS API兼容性


Windows 10支持iOS API的一个“合理子集”,它不会对应于iOS的某个版本,而是通过查看指标来寻找最常用的API。在第一个版本中,微软将关注以下API:


游戏:对OpenGL、OpenAL和传感器提供良好的支持

UI:UIKit、核心动画、核心图形、核心文字、触控

Objective-C:自动引用计数、代码块、Foundation框架

对于像分享、消息提示、存储组件这样的功能,开发者需要选择是继续使用iOS API,还是切换到Windows替代解决方案。如果你选择继续使用iOS API,Windows将提供一个兼容层来支持API正常运行;当然,微软更希望你使用他们提供的解决方案,这样你就可以访问高级Windows特性。


Swift


对于Swift,微软官方的立场是“暂不评论”。而在私下交流中,他们透露出支持Swift的意愿,但由于要在秋天到来前忙于准备Objective-C,以致于没有资源可以提供给Swift。


查看英文原文:Compiling Objective-C into C++ with Visual Studio


感谢邵思华对本文的审校


【责任编辑:(Top) 返回页面顶端