原创 Socket數據粘包、斷包處理實例(基於CocoaAsyncSocket)

前言 本文旨以實例的方式,使用CocoaAsyncSocket這個框架進行數據封包和拆包。來解決頻繁的數據發送下,導致的數據粘包、以及較大數據(例如圖片、錄音等等)的發送,導致的數據斷包。 本文實例Github地址:即時通訊的數據粘包、斷

原创 設計模式之—— 觀察者模式

  當對象間存在一對多關係時,則使用觀察者模式(Observer Pattern)。比如,當一個對象被修改時,則會自動通知它的依賴對象。觀察者模式屬於行爲型模式。 介紹 意圖:定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,

原创 鏈式編程、函數式編程、響應式編程

鏈式編程思想:   是將多個操作通過點號(.)鏈接在一起成爲一句代碼,使代碼可讀性好。 鏈式編程的特點:方法的返回值是block,block必須有返回值(對象本身),block裏可以有參數(需要操作的值)。方法的返回值必須是方法的調用者。

原创 iOS 詳解RunLoop

Runloop :運行循環 APP啓動,操作系統會開啓一條線程,這就是這個APP的主線程; 這個主線程是一個常駐線程,因爲這條線程上邊的Runloop 被開啓了;   Runloop 作用 保證線程不退出; 負責監聽所有的事件。 如: 觸

原创 iOS —— AutoreleasePool

首先:autorelease 的本質就是延時調用release; AutoreleasePool創建和釋放 App啓動後,蘋果在主線程 RunLoop 裏註冊了兩個 Observer,其回調都是 _wrapRunLoopWithAuto

原创 設計模式之—— 適配器模式

類適配器:通過繼承關係來適配兩個接口。 對象適配器:不繼承適配者,他們是一個關聯關係,相當於引用了這個類。 意圖:將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。 主要解決

原创 iOS —— CocoaAsyncSocket

CocoaAsyncSocket爲macOS、iOS和tvOS提供了易於使用且功能強大的異步套接字庫。他是基於C 語言Socket的一層封裝,更加的面向對象。使得原生連接狀態以及接受消息等函數都以代理的方式體現。使用性極高,極大提高開發效

原创 iOS之KVC

KVC(Key-value coding)鍵值編碼,就是指iOS的開發中,可以允許開發者通過Key名直接訪問對象的屬性,或者給對象的屬性賦值。而不需要調用明確的存取方法。這樣就可以在運行時動態地訪問和修改對象的屬性。而不是在編譯時確定,這

原创 多線程--- GCD

GCD 全稱Grand Central Dispatch,是純C語言,它會自動掛哪裏線程的生命週期。 多線程最基本的運行原理就是將任務添加到隊列,並且指定執行任務的函數,如下: //1:創建串行隊列 dispatch_q

原创 iOS ——密碼學

  散列(哈希)函數加密 特點: 1.算法公開。              2.對相同的數據加密,得到的結果是一樣的。              3.得到的結果都是定長的。 MD5 用途:             1. 密碼(服務器不需要

原创 iOS之KVO

簡介: KVO的全稱是Key-Value Observing , 翻譯過來就是鍵值監聽,可以用於監聽某個對象屬性值的改變。 常用API :            1: 添加觀察者: addObserve:forKeyPatch:optio

原创 iOS —— XMPP 詳解

iOS - XMPP 的使用 轉載 https://www.cnblogs.com/QianChia/p/6411914.html 1、XMPP XMPP 是一個基於 Socket 通信的即時通訊的協議,它規範了即時通信在網絡上數據的傳

原创 iOS 動態庫和靜態庫的區別 .a&framework

庫的本質是可執行的二進制文件,是資源文件和代碼編譯的一個集合。根據鏈接方式不同,可以分爲動態庫和靜態庫,其中系統提供的庫都屬於動態庫。 靜態庫:鏈接時會被完整的複製到可執行文件中,被多次使用就有多分拷貝。 靜態庫形式: .a和.frame

原创 ios 性能篇

iOS關於性能優化,工具很多,有了解的可以看看這兩個 MLeakFinder、DoraemonKit. 比較的實用。工具的使用就不多說了, 整理一些代碼方面的吧。 1.儘量把views設置爲完全不透明 * 如果你有透明的Views你應該設

原创 OC const、static 、extern 使用

宏常見用法:       <1>. 常見字符串抽成宏       <2>.常用代碼抽成宏。 const      <1>.定義常量,當有字符串常量的時候,蘋果推薦使用const。      <2> 編譯時刻:           宏:預編