原创 iOS組件化簡述

iOS應用架構談 組件化方案:https://casatwy.com/iOS-Modulization.html 1.組件化有什麼好處? 業務分層、解耦,使代碼變得可維護; 有效的拆分、組織日益龐大的工程代碼,使工程目錄變得可維護; 便於

原创 iOS基礎總結一(UIKit、Foundation)

1.如何實現一個線程安全的NSMutableArray? NSMutableArray是線程不安全的,當有多個線程同時對數組進行操作的時候,可能會導致崩潰或者數據錯誤。 實現方案: 線程鎖:使用線程鎖對數組的讀寫操作進行加鎖; 派發隊列:

原创 排序算法(四):簡單插入排序

插入排序原理 通過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。假設第一個元素排序之後,後面的元素對排號的部分從後向前比較並逐一移動。它包括直接插入排序、二分插入排序(又稱折半插入排序)、鏈表插入排序、希爾

原创 編程中的設計原則

1.單一職責原則 通俗的講,就是一個類只做一件事。例如: CALayer:動畫和視圖的顯示。 UIView:只負責事件傳遞、事件響應。 2.開閉原則 對修改關閉,對擴展開放。要考慮到後續的擴展性,而不是在原有的基礎上來回修改。 3.接口隔

原创 iOS基礎總結一(KVC、KVO簡述)

1.KVC實現原理 KVC,鍵值編碼,使用字符串直接訪問對象的屬性; 底層實現,當一 個對象調用setValue方法時,方法內部會做一下操作: (1)檢查是否存在相應key的set方法,如果存在,就調用set方法; (2)如果set方法不

原创 設計模式在iOS中的應用(一)

設計模式是有用的抽象化工具,用於解決工程和建築等領域的設計問題。出於同樣的目的,軟件開發領域借用了這一概念,設計模式是一個對象或類的設計模板,用於解決特定領域經常發生的問題。本文簡單介紹了幾種在iOS中常用的設計模式: 代理模式 爲其

原创 UITableView delegate/dataSource方法執行順序

第一輪:   1、numberOfSectionsInTableView    :假如section=2,此函數只執行一次,假如section=0,函數不執行,默認爲1   2、heightForHeaderInSection  ,執行兩

原创 Category 使用和優缺點

iOS 開發中,不可避免的用到Category 1、什麼是Category? 分類就是對一個類的功能進行擴展,,讓這個類能夠適應不不同情況的需求.在一般的實際開發中,我們都會對系統的一些常用類進行擴展,比如,NSString,Button

原创 http + restful簡介

1 原理 1.1 簡介 Http協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:WorldWide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。HTTP是一個基於TCP

原创 copy,strong,retain,weak和assign的區別

前言:   在初學iOS的時候,對於用什麼關鍵詞去修飾property,知其然而不知其所以然,大家都這麼用,就這麼用,不知道其原理。後來慢慢了解,看了大量的博客和自己慢慢的總結,摘抄了部分我理解的博客內容,內容基本屬於前人總結,自己手動寫

原创 排序算法:算法簡介

算法簡介 ● 什麼是算法        ➢一系列的計算步驟,用來將輸入數據轉化成輸出結果 ● 算法的意義        ➢用於解決特定的問題        ➢解決同一個問題的不同算法的效率常常相差非常大,這種差距的影響往往比硬件和軟件方面

原创 算法(三):快速排序

快速排序(Quicksort)是對冒泡排序的一種改進。 快速排序由C.A.R.Hoare 在1962年提出。他的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對

原创 iOS APP卡頓優化

卡頓解決的主要思路: 儘可能減少CPU、GPU資源消耗 儘量使用輕量級的對象,比如用不到事件處理的地方,可以考慮用CALayer取代UIView. 不要頻繁的調用UIView的相關屬性,比如frame、bounds、transform等屬

原创 iOS APP耗電的來源與優化

耗電的主要來源: CPU處理,Processing 網絡,Networking 定位,Location 圖像,Graphics 耗電的優化: 儘可能降低CPU、GPU功耗 儘量減少定時器的使用 優化I/O操作 儘量不要頻繁寫入小數據,最好

原创 設計模式(二):代理模式(委託模式)

代理模式 組成: 抽象角色:通過接口或者抽象類聲明真實角色實現的業務方法 代理角色:實現抽象角色,是真實角色的代理,通過真實角色的業務邏輯方法來實現抽象方法,並可以附加自己的操作。 真實角色:實現抽象角色,定義真實角色所需要實現的業務邏輯