原创 RunTime機制詳解(三)

方法交換(Method Swizzling),先來看看這兩張圖片瞭解一下方法的實現的步驟(圖片來源於網絡)。 一、方法未交前SEL與IMP是這樣的一一對應。 二、交換後SEL與IMP是這樣的對應關係。 三、具體代碼的實現是下面這樣。

原创 RunTime機制詳解(二)

爲一個類添加一個屬性,除了繼承、類別還有一種重要的方法,對,就是利用我們的RunTime機制。 一、在此之前我們必須要瞭解兩個方法的含義 // 方法一、OBJC_EXPORT void objc_setAssociatedObject(i

原创 sublime text3使用簡介

第一步:下載(下載鏈接),根據自己的操作系統下載相對應的版本。 第二步:安裝(按着提示安裝即可) 第三步:安裝插件環境(Package Control)(參考鏈接) 打開控制檯(ctrol+‘ 或者 View -> Show Cons

原创 時間選擇器的封裝

效果圖一 效果圖二 上代碼 typedef NS_ENUM (NSInteger,SelectedDateFormatter){ /**年月日*/ SelectedDateFormatterDefalut,

原创 RunTime機制詳解(一)

瞭解RunTime機制能都讓我們在對OC底層實現的認識有一個質的飛越,RunTime的功能十分強大。 一、利用RunTime機制來獲取所有的屬性 #pragma mark --- 獲取所有屬性 /* 一、objc_property_t:

原创 NSSet、NSMutableSet、NSOrderedSet、NSMutableOrderedSet解析

NSSet 1、集合是NSObject的子類。 2、NSSet裏面的元素是無序的,不能通過索引訪問,且元素不能重複,與NSArray中的元素不同(有序、可通過索引訪問、可重複)。 NSMutableSet 可變集合是NS

原创 【微信小程序】時間顯示爲NaN或null

問題描述 小程序在獲取時間後,真機測試顯示正常,但模擬顯示不正常;又或者真機測試不正常,模擬顯示正常。輸出或顯示爲null、NaN。 問題原因 iOS系統不支持2019-11-10這種格式的時間,並且iOS只支持2019/11/1

原创 瀑布流的實現原理

瀑布流的實現不同的人有不同的方法,個人認爲最靠譜的莫過於用UICollectionView來實現,只要明白其中的思想實現起來先就非常簡單了,其實博主也是在網上看別人寫的demo,下載下來研究弄明白的,給大家展示一下效果圖。 第一步、自定

原创 RunTime機制詳解(四)

平時我們只知道調用方法,其實內部的實現原理並不是很瞭解,方法的調用要用就是要用到接下來要講的消息轉發機制。在這裏我們可以利用消息轉發機制實現方法的動態添加。 注:所有的方法調用均採用下面的形式調用。 - (void)performSele

原创 數據存儲(二)

利用Sqlite存儲數據,是項目中比較常用的數據存儲方式,方便佔用的內存也比較少,比如我們經常用到的三方FMDB。 一、Sqlite的一般理解。 /** 基本介紹 * 數據定義語句(DDL:Data Definition Langua

原创 TCP通信流程解析

原文地址:點擊打開原文 B/S通信簡述 整個計算機網絡的實現體現爲協議的實現,TCP/IP協議是Internet的核心協議,HTTP協議是比TCP更高層次的應用層協議。 HTTP(HyperText Transfer Protocol

原创 代理通知鍵值監聽區別

原博文:點擊打開鏈接  前面分別講了delegate、notification和KVO的實現原理,以及實際使用步驟,我們心中不禁有個疑問,他們的功能比較類似,那麼在實際的編程中,如何選擇這些方式呢?        在網上看到一個博客上

原创 多線程(四)

下面主要說一下線程任務執行的順序 一、全局併發隊列的執行順序 <span style="font-size:18px;">#define DISPATCH_QUEUE_PRIORITY_HIGH 2 高 #define

原创 多線程(三)

下面主要介紹一下GCD(Grand Central Dispatch)的一般用法,理解好的話對以後的多線程開發是非常有幫助的。 個人認爲GCD有兩大優點 優點一、自動管理線程的生命週期(創建、調度、銷燬) 優點二、合理利用CPU內核,達到

原创 iOS開發常用傳值方式總結

開發中傳值司空見慣,今天來好好總結一下,一共七種傳值方式,且聽我們爲大家娓娓道來。 第一種、通知傳值——NSNotificationCenter。 /** 通知傳值的方式就類似我們廣播, 第一、廣播基站需要建設—————