原创 設計模式深入淺出(一)對象創建——工廠方法,抽象工廠

前言 好久沒寫博客了,之前AF的源碼解析也沒寫完,後續會補上。 回到設計模式。 說實話,本人寫的設計模式系列博客,也只是依照我目前淺薄的見解來寫的,並不能保證完全的正確,也希望大家有不同的想法,可以提出共同探討。 首先我們提到設計

原创 Objective-C Runtime 解析(三)—— swizzle method

在之前介紹Objective-C的方法消息機制時,我們知道Objective的方法調用是Runtime動態的在dispatch table中尋找方法實現的。 對於這個動態尋找的過程,我們可以進行“干涉”,從而實現Objectiv

原创 GCD源碼吐血分析(2)——dispatch_async/dispatch_sync/dispatch_once/dispatch group

上一章中,我們知道了獲取GCD queue的底層實現。獲取到queue後,就需要將任務提交到queue中進行處理。 我們有兩種方式提交任務: dispatch_async和dispatch_sync。一個是異步不等待任務完成就返回

原创 Flutter中如何保活你的StatefulWidget

近期在研究Flutter。大前端應該是未來客戶端開發的一個趨勢。畢竟,就人力成本和效率來說,大前端是開發的一個必然的選擇。 而在大前端技術中,Flutter相比React native,Weex,有更高的效率(Flutter原生的

原创 小白服務器編程指北(1)——從零搭建Django服務器(Centos7+Nginx+uWSGI)

目錄前言CentOS配置網絡連接配置YUM 源ifconfig: command not found安裝vim安裝gcc/g++Python配置Python3 update安裝Python3 開發套件PostgreSQL數據庫安裝

原创 AFNetWorking(3.0)源碼分析(二)——AFURLSessionManager

AFNetworking是基於NSURLSession實現的。回想一下NSURLSession的使用方式: 創建NSURLSessionConfig對象 用之前創建的NSURLSessionConfig對象創建配置NSURLSe

原创 理解RESTful架構

http://www.ruanyifeng.com/blog/2011/09/restful.html http://www.ruanyifeng.com/blog/2014/05/restful_api.html 不錯的文章!

原创 AFNetWorking(3.0)源碼分析(一)——基本框架

框架組成         AFNetWorking是著名的網絡通信框架,今天,我們就一起分析一下該框架的組成。         將AF下載導入工程後,下面是其包結構:         除去Support Files

原创 小白服務器編程指北(2)——用Docker編配你的服務器環境

安裝Docker 首先要安裝Docker。Docker底層使用的是Linux的容器技術。 所以,爲了能夠使用Docker,我們需要一臺安裝了兼容版本的Linux內核和二進制文件的最小化功能宿主機。 筆者這裏使用了CentOS 7操

原创 Objective-C Runtime 解析(二)——NSObject的load與initialize方法

NSObject類作爲Objective-C中絕大多數類的父類,向其子類提供了基本的Runtime接口與Objective-C Class的一些方法默認實現。 在NSObject中有兩個類方法,load與initialize方法,

原创 Objective-C Runtime 解析(四)—— 在Category中添加屬性

在OC中,我們可以通過Category 對已有的類進行擴展,這得益於OC的Runtime機制,讓類可以‘動態’的添加方法以及實現。 但是,在Category中我們無法向已有的類中添加屬性,這是因爲OC中記錄當前類屬性的ivars

原创 Objective-C runtime機制(11)——結業考試

下面代碼的輸出結果? BOOL res1 = [[NSObject class] isKindOfClass:[NSObject class]]; BOOL res2 = [[NSObject cla

原创 Objective-C runtime機制(10)——KVO的實現機制

使用KVO 自動觸發KVO 在平日代碼中,我們通過KVO來監視實例某個屬性的變化。 比如,我們要監視Student 的 age屬性,可以這麼做: @interface Student : NSObject @property(nona

原创 Block背後的數據結構及變量截取

本文的內容主要是基於Clang編譯器的官方文檔所寫。 Clang 先說些題外話,什麼是Clang?Clang是C++編寫的編譯器。我們知道,我們平常代碼所寫的任何程序,最終都需要通過編譯器轉換成與語言無關的機器二進制代碼。而Clang

原创 Objective-C runtime機制(8)——OC對象從創建到銷燬

在我們前面的幾章中,分析了OC的runtime一些底層的數據結構以及實現機制。今天,我們就從一個OC對象的生命週期的角度,來解析在runtime底層是如何實現的。 我們創建一個對象(或對象引用)有幾種方式? Student *stud