曾有人謠傳微軟 Windows 10 平臺將支持運(yùn)行 Android 程序,沒有人會預(yù)料到 iOS 應(yīng)用也將得到同樣的支持。目前,,微軟正結(jié)合 C2 和 Clang 使之變?yōu)榭赡堋?br/> 編譯器支持
谷歌和蘋果都使用 Clang 作為他們的 C++ 前端,,微軟將 Clang 與 Visual C++ 編譯器的后端 C2 結(jié)合,以此來支持在 Windows 上運(yùn)行 Android 和 iOS 程序,。
蘋果的 Objective-C 同樣使用 Clang 作為前端,所以一旦 Clang 與 C2 整合完成,他們也將獲得解析并編譯 Objective-C 的能力,。
IDE 支持
Visual Studio 中的 Objective-C 支持語法高亮、代碼補(bǔ)全,、和代碼調(diào)試功能,。C++和 C# 文件可以被引入到相同的項(xiàng)目中,允許程序直接跨邊界調(diào)用,。編譯器將處理所有封送工作,,所以開發(fā)者只會看到普通的函數(shù)調(diào)用。
大多數(shù) Objective-C 項(xiàng)目都以建立 XCode 項(xiàng)目開始,,所以 Visual Studio 將支持導(dǎo)入 XCode 項(xiàng)目,,VS 和 XCode 項(xiàng)目文件可在混合模式項(xiàng)目中共存,因此可以在兩種 IDE 中同時開發(fā)這個項(xiàng)目,。
混合模式項(xiàng)目
Windows 為 Objective-C 應(yīng)用提供了新的 API,,例如:動態(tài)磁貼。為了確??梢岳^續(xù)在平臺間共享代碼,,微軟允許你在調(diào)用 Windows API 前通過運(yùn)行時檢查它們是否可用?;蛘?, 你可以使用預(yù)處理器指令顯式地隔離平臺特定代碼與共享代碼。
運(yùn)行時行為
Windows 的 Objective-C 運(yùn)行時默認(rèn)通過檢測應(yīng)用原始平臺來決定具體行為,。舉個例子:如果你移植某個 iPhone 應(yīng)用,,那么它將默認(rèn)運(yùn)行在一個小窗口中,而從 iPad 移植的應(yīng)用將默認(rèn)運(yùn)行在常規(guī)大小的窗口中,。
所有這樣的行為可以在需要時被應(yīng)用覆蓋,。
iOS API 兼容性
Windows 10 支持 iOS API 的一個“合理子集”,,它不會對應(yīng)于 iOS 的某個版本,而是通過查看指標(biāo)來尋找最常用的 API,。在第一個版本中,,微軟將關(guān)注以下 API:
游戲:對 OpenGL、OpenAL 和傳感器提供良好的支持
UI:UIKit,、核心動畫,、核心圖形、核心文字,、觸控
Objective-C:自動引用計(jì)數(shù),、代碼塊、Foundation 框架
對于像分享,、消息提示,、存儲組件這樣的功能,開發(fā)者需要選擇是繼續(xù)使用 iOS API,,還是切換到 Windows 替代解決方案,。如果你選擇繼續(xù)使用 iOS API,,Windows 將提供一個兼容層來支持 API 正常運(yùn)行,;當(dāng)然,微軟更希望你使用他們提供的解決方案,,這樣你就可以訪問高級 Windows 特性,。
Swift
對于 Swift,微軟官方的立場是“暫不評論”,。而在私下交流中,,他們透露出支持 Swift 的意愿,但由于要在秋天到來前忙于準(zhǔn)備 Objective-C,,以致于沒有資源可以提供給 Swift,。