用Visual Studio将Objective-C编译为C++
2015-06-02 21:55
549 查看
编译器支持
谷歌和苹果公司都使用Clang作为它们的C++前端。为了使他们的代码运行在Windows上,微软不得不将Visual C++的后端C2和Clang结合起来。(Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器,源代码发布于BSD协议下。译者注)
IDE支持
在Visual Studio中Objective-C具有语法高亮、代码完成和调试支持等功能。C++和C#文件可以包含在同一个项目中,允许程序来直接跨区域进行调用。编译器将处理所有的细节所以开发者只是看到正常的函数调用的封装处理。大多数Objective-C项目都作为XCode项目而开始,所以Visual Studio提供了导入该项目类型的能力。VS和XCode项目文件可以存在于同一个项目中,这样你就可以在两种IDE对同一个项目进行开发。
混合模式项目
Windows提供了新的API给Objective-C,例如动态磁贴。为了确保代码可以继续在这两个平台之间共享,微软提供运行时检查来查看Windows API是否可以给很好的调用。或者,你可以使用预处理器指令从共享的代码中将特定平台的代码隔离出来。运行时行为
默认情况下Windows下的Objective-C运行库检测到应用程序的原始平台来确定它的行为。例如,如果你提供一个iPhone应用程序然后它将默认在一个狭窄的窗口中运行,而iPad应用程序运行在一个正常的窗口中。所有这些行为可由应用程序在需要时进行重写。
iOS API 兼容性
Windows 10支持iOS API的子集。它不会跟踪特定版本的iOS,但相反在标准中查看哪些APIs经常被使用。对于第一个版本,微软主要关注的APIs包括如下:游戏:OpenGL,OpenAL以及传感器
UI:UIKit,CooreAnimation,CoreGraphics,CoreText,Touch
Objective-C:ARC,Blocks,Foundation
一些类如共享、通知和StoreKit的特性,开发者需要在保留iOS APIs以及使用Windows的替代方案之间进行选择。如果你选择保留iOS APIs,Windows将会提供一个兼容性层,这样的APIs将能够开始运作。而选择Windows的替代方案的好处在于你可以使用Windows的高级功能。
Swift
微软对于Swift的官方立场是“此时不做评论”。大概也就是说他们想要支持Swift但是目前太忙了,还要继续为Objective-C做准备,而秋天也许会宣布关于Swift的消息。感谢您的访问,希望对您有所帮助。 欢迎大家关注、收藏以及评论。
为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp
相关文章推荐
- 强大的 Android 属性动画 ObjectAnimator
- java线程同步:使用Object的wait,notify,notifyAll做线程调度
- Object的Wait() 和notify()方法使用
- Software-artifact Infrastructure Repository 学习笔记 2:C Object Handbooky
- QMetaObject分析
- ELF relocatable object file && ELF Executable object file && Run-time Memory Image 的结构
- Objective-C编码规范:26个方面解决iOS开发问题
- XPCOM (Cross Platform Component Object Model)
- Objective-C编码规范
- birt报表报错, There is no report design object available.org.eclipse.birt.report.exception.ViewerExcepti
- [iOS] performSelector:withObject:afterDelay:调用没有作用的问题及解决方法
- Objective-C 编码规范
- @synchronized (object)使用详解
- 为GCD队列绑定NSObject类型上下文数据-利用__bridge_retained(transfer)转移内存管理权
- Objective-c 字面量
- android 详细解答json解析与生成 JSONObject JSONArray
- swfobject.embedSWF与div的z-index问题
- SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块
- objective-C 的内存管理之-自动释放池(autorelease pool)
- ObjectInputStream\ObjectOutputStream用字节流将一个Object对象持久化和读取