6.RainyRefreshControl,點擊下面的鏈接
成都創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網生態(tài)環(huán)境。為二連浩特企業(yè)提供專業(yè)的成都做網站、網站制作,二連浩特網站改版等技術服務。擁有十年豐富建站經驗和眾多成功案例,為您定制開發(fā)。
;tid=11823extra=page%3D1%26filter%3Dsortid%26sortid%3D1
7.iOS 信用卡輸入效果,允許開發(fā)人員創(chuàng)建復制實際信用卡的UI。
;tid=11805extra=page%3D1%26filter%3Dsortid%26orderby%3Ddateline%26sortid%3D1
1. Coding iOS 客戶端
Coding官方客戶端. 筆者強烈推薦的值得學習的完整APP.
GitHub - Coding/Coding-iOS: Coding iOS 客戶端源代碼
2. OSCHINA 的 iPhone 客戶端
開源中國的iPhone客戶端源碼
3. Git@OSC
Git@OSC iPhone 客戶端,方便用戶查看Git@OSC的項目以及簡單的操作issue等
oschina / git-osc-iphone
4. Firefox for iOS
GitHub - mozilla/firefox-ios: Firefox for iOS
5. zulip-ios
Dropbox收購公司內部社交服務商Zulip,然后全部開源,這是iOS App
GitHub - zulip/zulip-ios: Zulip iOS app
6. iOSSF
SegmentFault官方App
GitHub - gaosboy/iOSSF: SegmentFault官方App
7. iReddit
Reddit iPhone客戶端
GitHub - reddit/iReddit: The iReddit iPhone app
8. Monkey
GitHub第三方iOS客戶端
GitHub - coderyi/Monkey: Monkey is a GitHub third party client for iOS,to show the rank of coders and repositories.
9. Watch
Dribbble第三方客戶端
GitHub - tuesda/Watch: A project which demonstrate how to develop a custom client on android for dribbble.com
10. Voice2Note
懶人筆記iOS客戶端
GitHub - liaojinxing/Voice2Note: 懶人筆記iOS客戶端
11. RSSRead
“已閱”(iOS上開源RSS新聞閱讀器)
GitHub - ming1016/RSSRead: “已閱”(iOS上開源RSS新聞閱讀器),有興趣?那就Pull Requests吧
12. BeeFancy
BeeFancy仿Fancy官方APP的WIREFRAME,基于BeeFramework
GitHub - BeeFramework/BeeFancy: 仿Fancy官方APP的WIREFRAME,基于BeeFramework
13. SXNews
模仿網易新聞做的精仿網易新聞
GitHub - dsxNiubility/SXNews: High imitation Neteasy News. (include list,detail,photoset,weather,feedback)
14. Doppio
尋找最近的星巴克
GitHub - chroman/Doppio: An open source iOS app to find the nearest Starbucks store using NSURLSession, AFNetworking 2.0, Mantle and Starbucks private API.
15. Anypic
類似于Instagram的一款App
GitHub - ParsePlatform/Anypic: An open source mobile and web app that lets users share photos similar to Instagram
16. 豆瓣相冊
Slowslab iOS應用 豆瓣相冊 精選集 開源項目
GitHub - TonnyTao/DoubanAlbum: Slowslab iOS應用 豆瓣相冊 精選集 開源項目,僅供學習參考
17. ChatSecure-iOS
Objective-C寫的XMPP聊天應用
GitHub - ChatSecure/ChatSecure-iOS: ChatSecure is a free and open source encrypted chat client for iPhone and Android that supports OTR encryption over XMPP.
18. NotificationChat
Objective-C寫的完整的聊天應用
GitHub - relatedcode/EncryptedChat: This is a full native iPhone app to create realtime, text based group or private chat with Parse and Firebase.
19. FakeZhihuDaily
仿知乎日報iOS客戶端
GitHub - gnou/FakeZhihuDaily: 仿知乎日報iOS客戶端
20. ruby-china-for-ios
RubyChina官方客戶端
GitHub - ruby-china/ruby-china-for-ios: Ruby China client for iOS
21. Meizi
豆瓣妹子圖iOS客戶端
GitHub - Sunnyyoung/Meizi: 豆瓣妹子圖iOS客戶端
22. PlainReader
一款 iOS(iPhone + iPad) 新聞類客戶端,內容抓取自
PlainReader/PlainReader at master · guojiubo/PlainReader · GitHub
23. iOS-2048
用Objective-C實現(xiàn)的2048游戲
GitHub - austinzheng/iOS-2048: iOS drop-in library presenting a 2048-style game
24. ECMobile_iOS
基于ECShop的手機商城客戶端
GitHub - GeekZooStudio/ECMobile_iOS: 基于ECShop的手機商城客戶端
25. wikipedia-ios
維基百科官方App, 已上架
GitHub - wikimedia/wikipedia-ios: The official Wikipedia iOS app.
26. Sol
漂亮的扁平風格的天氣App
GitHub - comyarzaheri/Sol: Sol° beautifully displays weather information so you can plan your day accordingly. Check the weather in your current location or any city around the world. Implemented in Objective-C.
阿里妹導讀:剛剛,阿里巴巴正式對外開源了基于 Apache 2.0 協(xié)議的協(xié)程開發(fā)框架 coobjc,開發(fā)者們可以在 Github 上自主下載。
coobjc是為iOS平臺打造的開源協(xié)程開發(fā)框架,支持Objective-C和Swift,同時提供了cokit庫為Foundation和UIKit中的部分API提供了 協(xié)程 化支持,本文將為大家詳細介紹coobjc的設計理念及核心優(yōu)勢。
從2008年第一個iOS版本發(fā)布至今的11年時間里,iOS的異步編程方式發(fā)展緩慢。
基于 Block 的異步編程回調是目前 iOS 使用最廣泛的異步編程方式,iOS 系統(tǒng)提供的 GCD 庫讓異步開發(fā)變得很簡單方便,但是基于這種編程方式的缺點也有很多,主要有以下幾點:
針對多線程以及尤其引發(fā)的各種崩潰和性能問題,我們制定了很多編程規(guī)范、進行了各種新人培訓,嘗試降低問題發(fā)生的概率,但是問題依然很嚴峻,多線程引發(fā)的問題占比并沒有明顯的下降,異步編程本來就是很復雜的事情,單靠規(guī)范和培訓是難以從根本上解決問題的,需要有更加好的編程方式來解決。
上述問題在很多系統(tǒng)和語言開發(fā)中都可能會碰到,解決問題的標準方式就是使用協(xié)程,C#、Kotlin、Python、Javascript 等熱門語言均支持協(xié)程極其相關語法,使用這些語言的開發(fā)者可以很方便的使用協(xié)程及相關功能進行異步編程。
2017 年的 C++ 標準開始支持協(xié)程,Swift5 中也包含了協(xié)程相關的標準,從現(xiàn)在的發(fā)展趨勢看基于協(xié)程的全新的異步編程方式,是我們解決現(xiàn)有異步編程問題的有效的方式,但是蘋果基本已經不會升級 Objective-C 了,因此使用Objective-C的開發(fā)者是無法使用官方的協(xié)程能力的,而最新 Swift 的發(fā)布和推廣也還需要時日,為了讓廣大iOS開發(fā)者能快速享受到協(xié)程帶來的編程方式上的改變,手機淘寶架構團隊基于長期對系統(tǒng)底層庫和匯編的研究,通過匯編和C語言實現(xiàn)了支持 Objective-C 和 Swift 協(xié)程的完美解決方案 —— coobjc。
核心能力
內置系統(tǒng)擴展庫
coobjc設計
最底層是協(xié)程內核,包含了棧切換的管理、協(xié)程調度器的實現(xiàn)、協(xié)程間通信channel的實現(xiàn)等。
中間層是基于協(xié)程的操作符的包裝,目前支持async/await、Generator、Actor等編程模型。
最上層是對系統(tǒng)庫的協(xié)程化擴展,目前基本上覆蓋了Foundation和UIKit的所有IO和耗時方法。
核心實現(xiàn)原理
協(xié)程的核心思想是控制調用棧的主動讓出和恢復。一般的協(xié)程實現(xiàn)都會提供兩個重要的操作:
我們基于線程的代碼執(zhí)行時候,是沒法做出暫停操作的,我們現(xiàn)在要做的事情就是要代碼執(zhí)行能夠暫停,還能夠再恢復。 基本上代碼執(zhí)行都是一種基于調用棧的模型,所以如果我們能把當前調用棧上的狀態(tài)都保存下來,然后再能從緩存中恢復,那我們就能夠實現(xiàn)yield和 resume。
實現(xiàn)這樣操作有幾種方法呢?
上述第三種和第四種只是能過做到跳轉,但是沒法保存調用棧上的狀態(tài),看起來基本上不能算是實現(xiàn)了協(xié)程,只能算做做demo,第五種除非官方支持,否則自行改寫編譯器通用性很差。而第一種方案的 ucontext 在iOS上是廢棄了的,不能使用。那么我們使用的是第二種方案,自己用匯編模擬一下 ucontext。
模擬ucontext的核心是通過getContext和setContext實現(xiàn)保存和恢復調用棧。需要熟悉不同CPU架構下的調用約定(Calling Convention). 匯編實現(xiàn)就是要針對不同cpu實現(xiàn)一套,我們目前實現(xiàn)了 armv7、arm64、i386、x86_64,支持iPhone真機和模擬器。
說了這么多,還是看看代碼吧,我們從一個簡單的網絡請求加載圖片功能來看看coobjc到底是如何使用的。
下面是最普通的網絡請求的寫法:
下面是使用coobjc庫協(xié)程化改造后的代碼:
原本需要20行的代碼,通過coobjc協(xié)程化改造后,減少了一半,整個代碼邏輯和可讀性都更加好,這就是coobjc強大的能力,能把原本很復雜的異步代碼,通過協(xié)程化改造,轉變成邏輯簡潔的順序調用。
coobjc還有很多其他強大的能力,本文對于coobjc的實際使用就不過多介紹了,感興趣的朋友可以去官方github倉庫自行下載查看。
我們在iPhone7 iOS11.4.1的設備上使用協(xié)程和傳統(tǒng)多線程方式分別模擬高并發(fā)讀取數據的場景,下面是兩種方式得到的壓測數據。
從上面的表格我們可以看到使用在并發(fā)量很小的場景,由于多線程可以完全使用設備的計算核心,因此coobjc總耗時要比傳統(tǒng)多線程略高,但是由于整體耗時都很小,因此差異并不明顯,但是隨著并發(fā)量的增大,coobjc的優(yōu)勢開始逐漸體現(xiàn)出來,當并發(fā)量超過1000以后,傳統(tǒng)多線程開始出現(xiàn)線程分配異常,而導致很多并發(fā)任務并沒有執(zhí)行,因此在上表中顯示的是大于20秒,實際是任務已經無法正常執(zhí)行了,但是coobjc仍然可以正常運行。
我們在手機淘寶這種超級App中嘗試了協(xié)程化改造,針對部分性能差的頁面,我們發(fā)現(xiàn)在滑動過程中存在很多主線程IO調用、數據解析,導致幀率下降嚴重,通過引入coobjc,在不改變原有業(yè)務代碼的基礎上,通過全局hook部分IO、數據解析方法,即可讓原來在主線程中同步執(zhí)行的IO方法異步執(zhí)行,并且不影響原有的業(yè)務邏輯,通過測試驗證,這樣的改造在低端機(iPhone6及以下的機器)上的幀率有20%左右的提升。
簡明
易用
清晰
性能
程序是寫來給人讀的,只會偶爾讓機器執(zhí)行一下?!狝belson and Sussman
基于協(xié)程實現(xiàn)的編程范式能夠幫助開發(fā)者編寫出更加優(yōu)美、健壯、可讀性更強的代碼。
協(xié)程可以幫助我們在編寫并發(fā)代碼的過程中減少線程和鎖的使用,提升應用的性能和穩(wěn)定性。
本文作者:淘寶技術
1. OrmLite
OrmLite 不是 Android 平臺專用的ORM框架,它是Java ORM。支持JDBC連接,Spring以及Android平臺。語法中廣泛使用了注解(Annotation)。
2. SugarORM
SugarORM 是 Android 平臺專用ORM。提供簡單易學的APIs??梢院苋菀椎奶幚?對1和1對多的關系型數據,并通過3個函數save(), delete() 和 find() (或者 findById()) 來簡化CRUD基本操作。
要啟用SugarORM,需要在你的應用程序 AndroidManifest.xml 配置中添加如下meta-data標簽:
meta-data android:name="DATABASE" android:value="my_database.db" /
meta-data android:name="VERSION" android:value="1" /
meta-data android:name="QUERY_LOG" android:value="true" /
meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.my-domain" /
然后就可以從SugarORM擴展需要保存的數據類:
public class User extends SugarRecordUser {
String username;
String password;
int age;
@Ignore
String bio; //this will be ignored by SugarORM
public User() { }
public User(String username, String password,int age){
this.username = username;
this.password = password;
this.age = age;
}
}
要添加一個User,代碼如下:
User johndoe = new User(getContext(),"john.doe","secret",19);
johndoe.save(); //stores the new user into the database
3. GreenDAO
當性能很重要時(數據訪問頻繁),GreenDao是一個很快的解決方案,它能夠支持數千條記錄的CRUD每秒,和OrmLite相比,GreenDAO要快幾乎4.5倍。(準確數據請自行benchmark)。
GreenDAO小于100KB,所以對于應用程序APK的大小影響很小。
這里有一個教程,演示如何使用Android Studio,在Android應用程序中使用GreenDAO框架。
4. Active Android
Active Record(活動目錄)是Yii、Rails等框架中對ORM實現(xiàn)的典型命名方式。Active Android 幫助你以面向對象的方式來操作SQLite。
5. Realm
Realm 是一個將可以使用的Android ORM,基于C++編寫,直接運行在你的設備硬件上(不需要被解釋),因此運行很快。它同時是開源跨平臺的,iOS的代碼可以在GitHub找到,你還可以找到Objective C以及Swift編寫的Realm使用實例。
1:SDWebImage,UIImageView+WebCache加載一張圖片。
2:UIViewExt用于定位坐標很有用,可以直接拿到bottom,top,left,right.
3:CustomCatagory,是個類目,里面有navigationBar和UINavigationController的兩種系統(tǒng)版本下自定義navigationBar背景圖片方法,用于自定義navigationBar背景圖片。
4:UIUtils工具類,里面我寫了四個方法,一個獲取documents下的文件路徑,一個將NSDate類型轉化成字符串類型,一個將字符串轉化成NSDate類型,還有一個將傳進來的一個評分字符串分割開成兩個,放在數組中,用于顯示兩個不同字體類型的評分。
5:CONSTS常量類,里面存放的是整個項目中需要使用的常量,寫成宏形式。
6:UIFactory里面自定義了button類型,兩種常用button樣式。
7:JSONKit類用于json數據解析
8:ASIHTTPRequest開源庫,用于請求網絡,需要依賴這五個系統(tǒng)自帶庫CFNetwork, SystemConfiguration, MobileCoreServices, 和 libz、libxml2。
9: DataSevrice網絡請求類,分GET和POST請求兩種方式,使用HTTP請求網絡,使用ASIFormDataRequest類,需要一個url參數,當使用GET請求時候,不需要字典參數,增加一個請求頭,當使用POST請求時候需要一個字典參數,通過鍵key發(fā)送值。ASIFormDataRequest對象使用block請求數據,判斷版本,5.0以上使用ios5自帶的json解析類NSJSONSerialization,5.0版本之下使用JSONKit類,請求之后,使用block回調。如果請求失敗,返回請求失敗。
10:轉化成model對象類,將請求下來的網絡數據字典轉化成model對象。方便在其他類之間進行數據傳輸。
11:自定了一個單例類,將項目中需要在控制器之間傳輸的數據存儲起來,方便調用。
12:使用OpenFlow開源框架,用于顯示首頁的圖片要實現(xiàn)效果,在AFItemView類里面設置了高清和低清兩種樣式,實現(xiàn)里面三個代理方法,一個用于圖片切換時改變,一個用于請求加載圖片,通過_operationQueue創(chuàng)建一個線程來進行加載,因為如果都在主線程進行圖片加載,可能會造成線程堵塞。
13:EGORefreshTableHeaderView用于上拉下拉刷新,實現(xiàn)里面的幾個代理方法,當手指放開時候會去調用加載數據代理方法。
貌似有下面幾個,可能不全
TTTAttributedLabel/TTTAttributedLabel · GitHub
AFNetworking/AFNetworking · GitHub
ccgus/fmdb · GitHub
eugenehp/GCDAsyncSocket · GitHub
BradLarson/GPUImage · GitHub
tonymillion/Reachability · GitHub
applidget/zxing-ios · GitHub
網頁名稱:ios開發(fā)開源代碼,ios軟件源代碼
本文網址:http://aaarwkj.com/article28/dssjojp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、網站導航、移動網站建設、網站設計公司、網頁設計公司、動態(tài)網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)