Pinterest開源圖片下載和緩存框架--PINRemoteImage
PINRemoteImage是知名圖片社交應用Pinterest開源的一款線程安全、高性能、功能豐富的圖像下載庫。除常規的異步下載和緩存外,PINRemoteImage還支持多種類型的文件下載,比如PNG、JPG、WebP,甚至是動態圖。在弱聯網環境下,PINRemoteImage通過兩種方法來提高下載體驗,其中之一是支持漸進的JPG,但並不是很老的漸進顯示,而是添加了美觀的模糊效果來處理掃描。
查看單元格渲染時間--DWURecyclingALert
在APP中下拉,可看到每個單元格所需渲染時間,並可在用戶滾動APP時標記任何內容,以便開發者了解需要緩存的內容。
測試環境:Xcode 6.2,iOS 6.0 以上
打造超級NSUserDefault—ANKeyValue(作者:springox)
ANKeyValue嘗試保留UserDefault的Key-Value接口理念的同時,擴展其適用的范圍和層面。我們首先要做一個技術的預判——整個對象結構列表的存取(即歸檔)是否有意義?對此,筆者的實踐經驗是持肯定態度。App大量爆發的移動互聯網時代,每一款涉及互聯網業務的app都免不了運營類數據的加載和展示,這些數據往往通過合適的數據交換技術(字節流傳輸和恢復)達到客戶端,這些數據往往也僅在經過解析和映射後用於整體展示用途,比如新聞、視頻、購物、餐飲等首頁,大部分還只是靜態展示,少量數據涉及本地動態變化,變化的頻率更為稀疏。如果以寫字節流到本地文件的方式,每次加載都會因解析和映射重復消耗計算和內存,同時還無法支持對數據本地動態調整,比如“計數加1”、“點個贊”、“加個評論”等等。如果選擇數據庫方式,顯然也不合適這種需要高效可復用的場景(運營開發的需求的變更和迭代確實相當驚人!),同時又不太能發揮數據庫自身的優勢,比如“增刪查改”。相比之下,歸檔顯然更具備優勢,首先歸檔不需要再次解析和映射,其次基於反射,完全可以做到對象的自動序列化,對於開發效率的幫助更是數據庫無法望其項背的,在例子中,將可以看到支持一份list數據,僅僅需要數行代碼,不再需要准備更多。因此,基於這樣預判,ANKeyValue是值得我們去嘗試。正如開頭提及的,ANKeyValue提供類似UserDefault的Key-Value接口,高度封裝具體的持久化邏輯,我們只需要像對待一塊內存一個對象那樣去存取我們的對象即可,不僅如此,為了讓ANKeyValue真正具備項目應用價值,我們為它實現了以下的特性:
1、業務邏輯可分表,這從UserDefault得到靈感後第一個希望支持到的特性,我們的業務邏輯完全可以根據自己的需要創建獨立的table,而且table與table也是做到存儲上隔離的,至少目前是如此;
2、反射自動序列化,對象不必手動編寫序列化(當然也可以接受手動編寫),業務側完全不必考慮持久化邏輯,同時也有利於組件自身的迭代優化;
3、異步執行序列化,默認所有的序列化操作均為異步(當然也能支持同步操作),因此,set/get操作的速度僅此於Map/Dicitonary容器,另外,相關的同步保護邏輯都已考慮;
4、數據安全機制,支持存儲目標文件名哈希,提供AES級別的加解密Key-Value接口;
5、大數據塊優化,設想下,如果寫入的對象list包含圖片等資源,直接歸檔將會多麼低效,為了減少存取的開銷,資源均獨立存儲,並且限制反復無效讀寫;
6、版本升級管理,ANKeyValue提供了簡單的版本號機制,可用於升級時拋棄式的數據升級;
7、更多地特性將會被繼續發掘和實現......
測試環境:Xcode 6.2,iOS 6.0 以上
method swizzling封裝成 C函數和 NSObject分類,使用非常簡單(作者:12207480)
TYSwizzleDemo method swizzling easy to use,C Function and NSObject Categary
我已經把 method swizzling 封裝成 C 函數 和 NSObject 分類 ,使用非常簡單,demo附帶測試
測試環境:Xcode 6.2,iOS 6.0 以上
仿QQ空間,微博歡迎界面及發布界面按鈕彈出動畫效果(作者:breaking1800)
根據新浪微博歡迎界面實現頭像彈出,標題漸變顯示功能
點擊按鈕從下往上彈出界面,並有以下功能
界面顯示過程中底部按鈕順時針旋轉
新界面中功能按鈕按順序依次彈出
以上個界面作為背景模糊效果顯示
點擊按鈕實現放大消失效果
點擊關閉按鈕功能按鈕逆序彈出
關閉按鈕逆時針旋轉直到界面消失
測試環境:Xcode 6.2,iOS 6.0 以上