為什麼很多 App 都變成 iOS 6 only 的了?
是因為技術層面上只適配 iOS6 最簡單嗎?
就單說技術層面。
iOS SDK 沒有提供優雅降級的方式,除了在運行時需要對新增 API 的存在性進行判斷,還要考慮相同 API 在不同 iOS 版本的行為差異,所以進行多版本支持通用的做法是自己抽象一個層來維護這部分邏輯,這會增加複雜性。
iOS SDK 的 API 在不斷改善和豐富,原先自己或第三方開源實現的邏輯現在都可以不錯的被原生實現取代,比如 JSON 解析、UIViewController 的改善,縮減了外部依賴,還可以提升可靠性。
此外,Objective-C 語言、編譯器也在不斷進化,iOS 5+ 才能獲得包含 weak ref 的完整 ARC 支持,而之前是需要手動管理內存計數的;iOS 5 之後 iOS SDK 定義了更多利用 Blocks 語言特性的 API 用於更方便的回調和非同步操作。這兩者能提升不少開發效率。
ios6有很多新特性可以極大提高開發效率。arc讓媽媽不用擔心我的內存;UICollectionView,內置的json, 也讓我們少用很多第三方插件。至於對用戶的傷害,難道用戶越獄的時候就沒有認識到這是對開發者的傷害嗎?-----------------------------------------補充重要的原因,因為絕大部分活躍用戶都喜歡及時升級到比較新的版本,特別是5.0開始可以直接空中升級,不必藉助電腦。不升級的用戶本來份額就非常小,何況如果連繫統都懶得升級的用戶,積極下載應用並付費的意願就更低了。
我來講講我的程序在ios6出現之前為什麼ios5 only。
這是因為我在ios5剛出的時候進入了ios開發市場,下載了xcode,照書編寫了一個小程序。發現他是ios5 only的。我不知道怎麼兼容ios4,所以就ios5 only了。
感謝ios6,現在我的程序支持ios5以上的所有版本,似乎被迫兼容性變強了。
希望有幫助。首先拋除那些必須使用ios6的特性的app,比如passbook,ios6 only的app並不多,尤其是下載量大的app,ios6 only的就更少了。
ios6可以通過auto layout來兼容iphone5,因此一些小公司和個人開發者會做ios6 only的app。但對於對市場有追求的開發商,兼容老版本雖然是臟活,但不幹臟活是賺不到錢的,尤其是兼容ios5。ios5的市場份額是比較大的,不兼容等於自殺。
所以樓主說的"很多",在app個數比例上講,是不成立的,如果按照下載量加權,就更不成立了。
另外,arc是編譯器特性,ios4.3之後都在支持。因為iOS6有很多很讓人想用的特性, 新的Avenir字體, UICollectionView, UIViewController的改進, Auto Layout等等
開發者手裡沒有iOS5系統的手機了。
ios6 deprecate 了很多東西。要向下支持就要用到它們,但是xcode會出現黃色醒目warning。我有輕度強迫症,我喜歡我的代碼no error,no warning。
很大的原因,在於開發者衡量ios版本的兼容帶來的工作量和市場佔有率的一些平衡。畢竟每次ios大的版本更新,都會有新的API,帶來新的特性,如果你的App需要使用這些新特性的話,就得如此衡量了。
其實按照蘋果的邏輯 app 應該跟著 iOS 版本一起上升, 它自己的 app 就是這麼幹得, 這很明顯為開發者樹立了一個榜樣.
其次, 蘋果不斷在淘汰對舊版本的支持. 作為消費類電子產品的 iPhone/iPad, 其操作系統的支持周期明顯短於桌面系統. 另外從開發工具 Xcode 來看, 4.5 之後最低只支持到 4.3, 這也迫使開發者逐步升高能支持的 iOS 的版本.
另外, 還糾結於低版本的是不是因為 6 還沒法越獄呢? 否則我看不出升級到 6 有什麼問題.
我覺得這個問題需要量化,很多app到底是多大佔比?升級了xcode後,很多開發者會用了這個6的新特性,只能ios6才能支持。所以就ios6 only了。 但是對於真正要覆蓋廣用戶的,就肯定要考慮不使用ios6的新特性了。但是量卻不一定很大。
我覺得還有一個原因是iOS 6還沒越獄
推薦閱讀:
※iOS 應用的發布方式有哪些?
※如何評價iPhone上的震動反饋?
※你是因為什麼才買的iphone7或7P?
※魅藍note和iPhone5c你會選哪款?
※用了兩年的iPhone6換小米5S合適嗎?