為了要讓現有應用程式在新版macOS上執行,蘋果對299個應用程式施以相容性修補,以確保運作正常,這些應用程式包括各種耳熟能詳的名字,Photoshop、微軟Office系列、Firefox以及Dropbox等,甚至連蘋果自家的應用程式都在列表內。

Android與iOS開發者Zhuowei Zhang在自家部落格寫道,他用了macOS 10.13.4上的AppKit、Foundation以及CoreFoundation,發現299個唯一的應用程式Bundle ID,而這代表這些應用程式都被蘋果動過手腳了。

應用程式有沒有被修補,藉由bool __CFAppVersionCheckLessThan(CFStringRef, CFSystemVersion)函式就能確定,當結果回傳True,代表該這個應用程式符合特定Bundle ID,且與早前的macOS相鏈結,舊版本的應用程式便會被加上相容性修補,但如果應用程式以較新版的SDK建立則不會。

Zhuowei Zhang提到,蘋果為應用程式加上的補丁,並不會大幅的改變應用程式的行為,像是加上autoreleasepool這類陳述式,或是有其他開發者發現Dragon Age 2中的NSBundle imageForResource呼叫了Bundle pathForImageResource而非Bundle URLsForImageResource,也就是說被修改後以檔案創建圖像而非URL。

還有一些值得注意的地方,這299個應用程式中,微軟的Excel、PowerPoin以及Word被些微更改了排序的方法,另外有25個應用程式被禁用了Sierra版本的新功能Automatic tabbing,有部分補丁只針對特定公司,像是Adobe的應用程式多數補上了_NSSavePanelUseLocalhostURLsDefaultValueFunction,而NSTableView則分別被加在HP、Sketch以及TeamViewer等應用程式中。

Zhuowei Zhang提到,還有部分應用程式不知為何的擁有特別的殊榮,Eclipse、VMWare、Dragon Age 2、Apple Keynote、Apple Motion以及微軟Office使用了特殊命名的修補函式。此外,這份列表中存在64個蘋果自家的應用程式,Zhuowei Zhang猜測,因為蘋果喜歡使用一些第三方無法使用的私人API,反而導致相容性下降,這是可以預料的,但是他指出,其中出現像是com.apple.loginwindow這樣的系統應用程式就蠻詭異的,他認為,蘋果是透過相容性系統對特別的系統應用進行補丁,但他也提出了質疑,為什麼不是透過框架來解決這個問題?

受到蘋果補丁恩惠的應用程式,除了上述提及,另外還有AutoCAD、Maya、Matlab、Chrome、Opera、Citrix GoToMeeting、思科Spark、Spotify、Evernote、Dropbox、暴風雪的遊戲、1Password、OpenJDK、Firefox以及Fujitsu ScanSnap等299個應用程式,Zhuowei Zhang在部落格中提供了的詳細列表

Zhuowei Zhang提到,過去他以為蘋果不會像微軟一樣在意應用程式的相容性。不過,論壇上也有網友對此評論,只有夠重要的應用程式,蘋果才會進行相容性修補。


Advertisement

更多 iThome相關內容