原创 iOS面試題基礎

分類、擴展、代理、通知、KVC、KVO、屬性關鍵字 一、分類(Category) 1、分類的作用? 聲明私有方法,分解體積大的類文件 2、分類的特點? 可以爲系統類添加分類。在運行時時期,將 Category 中的實例方法列表、協議列表、

原创 iOS應用瘦身

iOS應用瘦身 iOS9新特性,根據用戶設備型號,在保證應用程序完整的情況下,儘可能的壓縮和減少應用程序安裝包的體積,實現方法主要有三種:應用程序切片(Slicing)?、中間代碼(Bitcode)和按需加載資源(On?Demand Re

原创 MVC與MVVM設計模式

MVC:簡單來說就是,數據、視圖、邏輯進行分層,實現解耦。 MVVM:是Model-View-ViewMode模式的簡稱。由模型(Model)、視圖(View)、視圖模型(ViewModel)三部分組成,比MVC更加釋放控制器臃腫,將一部

原创 iOS多線程的總結

一、多線程的基本概念 進程:系統進行資源分配和調度的基本單位。 線程:線程是CPU調度的基本單元,一個進程對應多個線程。 同一個進程中可以包括多個線程,並且線程共享整個進程的資源(寄存器、堆棧、上下文),一個進程至少包括一個線程。 主線程

原创 GCD死鎖問題的解決

串行與並行 **串行和並行都是相對於隊列而言的 ** -隊列(負責調度任務) -串行隊列:一個接一個的調度任務 -併發隊列:可以同時調度多個任務 在使用GCD的時候,我們會把需要處理的任務放到Block中,然後將任務追加到相應的隊列裏面,

原创 Git的使用

pwd命令用於顯示當前目錄   初始化一個Git倉庫:git init 添加:git add <file> git commit -m <message>     查看分支:git branch 創建分支:git branch <name

原创 iOS庫.a和.framework的區別

一、什麼是庫? 庫是共享程序代碼的方式,一般分爲靜態庫和動態庫。 二、靜態庫與動態庫的區別? 靜態庫:鏈接時完整地拷貝至可執行文件中,被多次使用就有多份冗餘拷貝。 動態庫:鏈接時不復制,程序運行時由系統動態加載到內存,供程序調用,系統只加

原创 iOS數據加密

哈希散列函數 1、單向散列函數的特點 加密後密文的長度是定長的 如果明文不一樣,那麼散列後的結果一定不一樣 如果明文一樣,那麼加密後的密文一定一樣(對相同數據加密,加密後的密文一樣) 所有的加密算法是公開的 不可以逆推反算 2、經典加密算

原创 iOS線程間的通信

1、NSThread - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait; -

原创 HTTP和HTTPS

HTTP TCP(Transmission Control Protocol) 傳輸控制協議 TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握手確認建立一個連接: 位碼即tcp標誌位,有6種標示: SYN(synchro

原创 iOS中的消息發送和消息轉發

消息發送 OC代碼 [person read:book]; 編譯後 objc_msgSend(person, @selector(read:), book); objc_msgSend的具體流程如下: 通過isa指針找到所屬類 查找類

原创 iOS內購流程

1、同意協議,填寫聯繫方式,添加銀行卡信息,填寫稅務信息 2、創建內購項目,選擇項目類型(消耗型項目,非消耗型項目,自動續期訂閱,非續期訂閱),填寫項目名稱和產品id 3、添加沙盒測試員 4、代碼實現  

原创 iOS中weak的底層實現原理

原文鏈接:https://www.jianshu.com/p/13c4fb1cedea Runtime維護了一個weak表,用於存儲指向某個對象的所有weak指針。weak表其實是一個hash(

原创 如何解決NSTimer的循環引用問題

總結了四種解決方案,與君共享 1、使用類方法 @interface TimerTarget : NSObject @property (nonatomic, assign) SEL selector; @property (nonat

原创 iOS響應者鏈

響應者對象 繼承自UIResponder的對象稱之爲響應者對象。UIApplication、UIWindow、UIViewController和所有繼承UIView的UIKit類都直接或間接的繼承自UIResponder。UIRespon