原创 iOS單元測試拾遺(一)

  最近開始在團隊中推廣單元測試,這邊使用的的是Kiwi測試框架。詳細教程大家可以參考下方三篇文章 https://www.jianshu.com/p/ad55e197a8d3 https://onevcat.com/2014/0

原创 打造一款高穩定易擴展的網絡請求框架JKNetworking

  前面一篇文章梳理了網絡請求庫的需求《網絡請求框架需求梳理》,接下來說說我這邊的情況,公司的網絡請求框架因爲不能滿足需求需要重新推倒,但是每週迭代一次的頻率,以及捉襟見肘的測試人力,又不允許太大的改動。爲了實現網絡框架足夠的穩定

原创 iOS內存優化之解決延遲釋放

    在實際開發過程中,使用NSTimer 或者 performSelector... afterdelay 在定時器事件未觸發的時候,如果返回上一個頁面,會由於runloop強持有target,短時間內不會釋放。造成內存不能

原创 iOS 解決CADisplayLink造成循環引用方案

最近在排查項目中存在的內存泄漏,今天和大家分享一個CADisplayLink造成循環引用的解決方案,造成內存循環引用的原因和NSTimer是一樣的都是加入runloop後對target進行了一個強持有造成的。具體代碼如下: int

原创 iOS UICollectionView 避免cellsize重複計算的一些思路

  上次寫了JKKVOHelper以後,我這邊最近增加了一個方法。主要是爲了解決UICollectionView 繪製過程中cell的Size重複計算的問題。具體方法如下: /// 添加一組keyPath監聽 /// @param

原创 Object-C 中集合strong和copy的區別

  之前寫過一篇文章《Object-C 中strong和copy的區別》主要討論分析了strong和copy在不同場景下的區別,最近發現漏了一個點,就是自定義對象(注:繼承自NSObect的對象)組成的數組,執行copy,stro

原创 OC實現KVO監聽block方式響應事件

   KVO監聽很強大,但是直接使用也存在一些問題,比如在多線程下重複添加,重複移除的問題。代碼比較分散不好維護等問題。爲了解決這些問題,愉快的搬磚我這邊進行了封裝,具體代碼如下: /** 添加keyPath監聽 @par

原创 C語言實現選擇排序算法

選擇排序算法,與冒泡排序的優勢就是減少了交換操作。代碼如下: void selectSort(int A[], int n){ int min; for (int i = 0; i < n-1; i++) {

原创 C語言實現雞尾酒排序

雞尾酒排序算法: void cocktailSort(int A[], int n){ int left = 0; int right = n - 1; while (left != right) {

原创 C語言實現冒泡排序

  很久已經沒有弄過和C語言相關的東西了,最近開始複習數據結構和算法。我這邊實現了冒泡排序算法,代碼如下: void printfArray(int A[],int n){ for (int i = 0; i <

原创 使用Vue寫iOS頁面(一)

  去年的時候其實已經把Vue的文檔,以及Vue權威指南這本書看的差不多了,也進行了相關的練習,但是由於年底項目比較緊張,所以也沒有真正的在iOS項目中使用Vue去寫頁面。最近開始練習,用Vue寫了一個簡單的頁面,放在了練手app

原创 簡單算法實現交換兩個變量的值

  談到算法,好多人都感到腦殼疼,我也不例外。主要是平時工作忙,下班了還有各種進步,基本對算法這一塊研究的較少。算法可以稱之爲前輩智慧的結晶。算法的好壞更多的是從時間複雜度,空間複雜度來考量的。對於我們這些使用者來說,如何結合實際

原创 求解最大公約數以及最小公倍數

  最大公約數和最小公倍數求解,常用的方法是短除法進行因式分解,然後最大公約數是所有公共因子的乘積,最小公倍數是所有因子的乘積。 本質上求最小公倍數就是求最大公倍數:x=ma, y=mb;m是最大公約數,那最小公倍數就是mab。所

原创 iOS開發組件化之組件的國際化處理

  在進行組件化開發的時候,有時候需要對業務組件進行國際化的配置操作,但是又不想把這些文件放到主app中,針對這種情況我們可以把組件化的國際化配置文件放到組件中,由相關的組件開發人員進行配置,這樣穩定性強,責任明確。方便管理。爲了

原创 分享一個app內日誌查看工具

  很早之前爲上家公司寫過一個日誌查看搜索的組件,方便在開發,內測階段調試bug。但是感覺不太滿意,最近自己 重新完善了一下,開源給大家。主要完善的內容如下: 1,每次app殺死,重新啓動都會新創建一個日誌文件 2,可以設置最大的