bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

ios開發主流框架,ios前端框架

ios常用開發框架有哪些

sstoolkit 一套Category類型的庫,附帶很多自定義控件,功能不錯~

成都創新互聯歡迎咨詢:18980820575,為您提供成都網站建設網頁設計及定制高端網站建設服務,成都創新互聯網頁制作領域十多年,包括成都搬家公司等多個行業擁有多年的營銷推廣經驗,選擇成都創新互聯,為網站錦上添花!

BlocksKit 將Block風格帶入UIKit和Founcation

cocoa-helpers 一些Cocoa的擴展 2年前的工程

CoconutKit 一系列擴展和一些自定組件

STUtils 一系列擴展包

PSFoundation 一系列擴展 和功能增強

ConciseKit 一系列宏定義 挺有意思

DTFoundation 又一系列擴展

BBBootstrap 一些常見功能的擴展庫

ios 框架集成的三種方式

1、Accelerate: 一個大規模的數學計算和圖像計算的框架,它的作用和使用推薦下面兩篇文章

Introduction to the Accelerate Framework in Swift

官方文檔 Accelerate

2、Accounts: 它是iOS原生提供的一套賬戶管理框架,其支持Facebook,新浪微博,騰訊微博,Twitter和領英賬戶管理的功能。需要注意,在iOS 11 及以上系統中,將此功能已經刪除,因此Accounts.framework實際上已經沒有太大的意義,其只在iOS 11之前的系統上可用!所以這里我們就不在仔細說它了,簡單的提一下就好。

3、AddressBook、AddressBookUI 通訊錄相關的框架,我們獲取聯系人通訊錄先關的都是咋這兩個框架里面。

AddressBook、AddressBookUI 使用

AddressBook 官方文檔

AddressBookUI 官方文檔

剛剛,阿里開源 iOS 協程開發框架 coobjc!

阿里妹導讀:剛剛,阿里巴巴正式對外開源了基于 Apache 2.0 協議的協程開發框架 coobjc,開發者們可以在 Github 上自主下載。

coobjc是為iOS平臺打造的開源協程開發框架,支持Objective-C和Swift,同時提供了cokit庫為Foundation和UIKit中的部分API提供了 協程 化支持,本文將為大家詳細介紹coobjc的設計理念及核心優勢。

從2008年第一個iOS版本發布至今的11年時間里,iOS的異步編程方式發展緩慢。

基于 Block 的異步編程回調是目前 iOS 使用最廣泛的異步編程方式,iOS 系統提供的 GCD 庫讓異步開發變得很簡單方便,但是基于這種編程方式的缺點也有很多,主要有以下幾點:

針對多線程以及尤其引發的各種崩潰和性能問題,我們制定了很多編程規范、進行了各種新人培訓,嘗試降低問題發生的概率,但是問題依然很嚴峻,多線程引發的問題占比并沒有明顯的下降,異步編程本來就是很復雜的事情,單靠規范和培訓是難以從根本上解決問題的,需要有更加好的編程方式來解決。

上述問題在很多系統和語言開發中都可能會碰到,解決問題的標準方式就是使用協程,C#、Kotlin、Python、Javascript 等熱門語言均支持協程極其相關語法,使用這些語言的開發者可以很方便的使用協程及相關功能進行異步編程。

2017 年的 C++ 標準開始支持協程,Swift5 中也包含了協程相關的標準,從現在的發展趨勢看基于協程的全新的異步編程方式,是我們解決現有異步編程問題的有效的方式,但是蘋果基本已經不會升級 Objective-C 了,因此使用Objective-C的開發者是無法使用官方的協程能力的,而最新 Swift 的發布和推廣也還需要時日,為了讓廣大iOS開發者能快速享受到協程帶來的編程方式上的改變,手機淘寶架構團隊基于長期對系統底層庫和匯編的研究,通過匯編和C語言實現了支持 Objective-C 和 Swift 協程的完美解決方案 —— coobjc。

核心能力

內置系統擴展庫

coobjc設計

最底層是協程內核,包含了棧切換的管理、協程調度器的實現、協程間通信channel的實現等。

中間層是基于協程的操作符的包裝,目前支持async/await、Generator、Actor等編程模型。

最上層是對系統庫的協程化擴展,目前基本上覆蓋了Foundation和UIKit的所有IO和耗時方法。

核心實現原理

協程的核心思想是控制調用棧的主動讓出和恢復。一般的協程實現都會提供兩個重要的操作:

我們基于線程的代碼執行時候,是沒法做出暫停操作的,我們現在要做的事情就是要代碼執行能夠暫停,還能夠再恢復。 基本上代碼執行都是一種基于調用棧的模型,所以如果我們能把當前調用棧上的狀態都保存下來,然后再能從緩存中恢復,那我們就能夠實現yield和 resume。

實現這樣操作有幾種方法呢?

上述第三種和第四種只是能過做到跳轉,但是沒法保存調用棧上的狀態,看起來基本上不能算是實現了協程,只能算做做demo,第五種除非官方支持,否則自行改寫編譯器通用性很差。而第一種方案的 ucontext 在iOS上是廢棄了的,不能使用。那么我們使用的是第二種方案,自己用匯編模擬一下 ucontext。

模擬ucontext的核心是通過getContext和setContext實現保存和恢復調用棧。需要熟悉不同CPU架構下的調用約定(Calling Convention). 匯編實現就是要針對不同cpu實現一套,我們目前實現了 armv7、arm64、i386、x86_64,支持iPhone真機和模擬器。

說了這么多,還是看看代碼吧,我們從一個簡單的網絡請求加載圖片功能來看看coobjc到底是如何使用的。

下面是最普通的網絡請求的寫法:

下面是使用coobjc庫協程化改造后的代碼:

原本需要20行的代碼,通過coobjc協程化改造后,減少了一半,整個代碼邏輯和可讀性都更加好,這就是coobjc強大的能力,能把原本很復雜的異步代碼,通過協程化改造,轉變成邏輯簡潔的順序調用。

coobjc還有很多其他強大的能力,本文對于coobjc的實際使用就不過多介紹了,感興趣的朋友可以去官方github倉庫自行下載查看。

我們在iPhone7 iOS11.4.1的設備上使用協程和傳統多線程方式分別模擬高并發讀取數據的場景,下面是兩種方式得到的壓測數據。

從上面的表格我們可以看到使用在并發量很小的場景,由于多線程可以完全使用設備的計算核心,因此coobjc總耗時要比傳統多線程略高,但是由于整體耗時都很小,因此差異并不明顯,但是隨著并發量的增大,coobjc的優勢開始逐漸體現出來,當并發量超過1000以后,傳統多線程開始出現線程分配異常,而導致很多并發任務并沒有執行,因此在上表中顯示的是大于20秒,實際是任務已經無法正常執行了,但是coobjc仍然可以正常運行。

我們在手機淘寶這種超級App中嘗試了協程化改造,針對部分性能差的頁面,我們發現在滑動過程中存在很多主線程IO調用、數據解析,導致幀率下降嚴重,通過引入coobjc,在不改變原有業務代碼的基礎上,通過全局hook部分IO、數據解析方法,即可讓原來在主線程中同步執行的IO方法異步執行,并且不影響原有的業務邏輯,通過測試驗證,這樣的改造在低端機(iPhone6及以下的機器)上的幀率有20%左右的提升。

簡明

易用

清晰

性能

程序是寫來給人讀的,只會偶爾讓機器執行一下。——Abelson and Sussman

基于協程實現的編程范式能夠幫助開發者編寫出更加優美、健壯、可讀性更強的代碼。

協程可以幫助我們在編寫并發代碼的過程中減少線程和鎖的使用,提升應用的性能和穩定性。

本文作者:淘寶技術

文章題目:ios開發主流框架,ios前端框架
瀏覽路徑:http://vcdvsql.cn/article6/dsdidog.html

成都網站建設公司_創新互聯,為您提供ChatGPT虛擬主機靜態網站定制網站微信小程序電子商務

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計