原创 IPhone設備信息獲取與網絡狀態監測

我們在開發過程中有時要獲取設備的一些基本信息,比如系統版本,設備唯一標識符等,但從iOS5之後設備的唯一標識udid不可以代碼獲取了,也就是這句代碼是廢的:[[UIDevice currentDevice] uniqueIdentifie

原创 iOS回調函數(block篇)

我們經常用到回調,到底什麼是回調函數呢? 回調函數就是由申明函數的類調用函數,而實現卻在另一個類中。事實上,通知,block,代理雖然名字不一樣但是原理都一樣,都是利用回調的機制。 下面就一起了解下block的回調,以block在兩個控制

原创 處理鍵盤升起後對界面覆蓋問題的處理

大家在開發app的時候,界面中時常會有輸入框(UItextfield,UItextview),這時我們點擊輸入框時會弔起鍵盤,根據手機屏幕不同我們的鍵盤會不同程度上覆蓋界面上的部分控件,包括有無nav時座標的變化與處理都會不同。所以

原创 Cocoapods創建pod公有庫

一、 首先簡單瞭解下cocoapods的機制 cocoapods有個遠程索引庫,索引庫下放着框架的描述信息:框架的名稱,框架的版本號,框架的描述文件(.spec),開發者上傳的代碼都是位於索引庫的遠程地址下。當你進行pod初始化(pod

原创 如何將一個uiview推送到窗口的前面與背後

將一個UIView顯示在最前面只需要調用其父視圖的 bringSubviewToFront()方法。 將一個UIView層推送到背後只需要調用其父視圖的 sendSubviewToBack()方法。 下面看看代碼是如何實現的:

原创 Quartz2D使用之基本圖形繪製(一)

首先我們要知道Quartz 2D是什麼? Quartz 2D是一個二維繪圖引擎,同時支持iOS和Mac系統。 其次Quartz 2D能完成哪些工作? Ø繪製圖形 : 線條\三角形\矩形\圓\弧等 Ø繪製文字 Ø繪製\生成圖片(圖像)

原创 runtime實現原理

1.runtime實現的機制是什麼? runtime是一套比較底層的純C語言API, 屬於一個C語言庫, 包含了很多底層的C語言API。 在我們平時編寫的OC代碼中, 程序運行過程時, 其實最終都是轉成了runtime的C語言代碼, r

原创 CocoaPods安裝與使用

在公司中我們做iOS開發過程會經常使用一些第三方庫,當然你足夠牛逼你也可以自己寫庫,我想既然你在看我這篇博文,估計你離寫框架還有段距離! 廢話少說,下面直入正題:首先,CocoaPods是什麼?CocoaPods是用來管理第三方庫的,比如

原创 iOS數據打印時怎麼把編碼後的文字顯示成中文

我們開發中經常會打印字典數組中的數據,很多時候我們打印出來的文字數據都是UTF-8編碼後的編碼文字,看着很蛋疼。。。沒關係,先別蛋疼,有個很有愛的方法幫你解決這個問題。方法很簡單就是寫個Foundation的分類,內容就是針對數組與字典!

原创 OC對象內存大小探究

Objective-C編程語言是C語言的超集,在C語言的基礎上加入了面向對象的內容。OC可以和C/C++混合使用,OC對象都可以轉化爲C/C++結構體表示。 要想知道一個NSObject對象佔用多少內存,可以通過查看NSObject對象對

原创 解決iOS11刷新tableview時抖動問題

iOS tableview開啓高度估算(Self-Sizing),reloadData的時候不再全部計算高度。 解決方案: 在初始化tableview的時候加上這幾行 _tableView.estimatedRowHeight = 0

原创 點擊事件的HOOK

我們在做數據埋點時,如果要做到解藕的實現,需要使用hook的方式做攔截。 在做UIButton事件攔截的時候,我知道button點擊後會執行sendAction:to:forEvent:方法,所以我可以hook這個方法做些其他事,那UIV

原创 在現有工程中實施基於CTMediator的組件化方案

國內業界大家對組件化的討論從今年年初開始到年尾,不外乎兩個方案:URL/protocol註冊調度,runtime調度。   我之前批評過URL註冊調度是錯誤的組件化實施方案,在所有的基於URL註冊調度的方案中,存在兩個普遍問題:   命名

原创 錯誤 ld: library not found for -lPods

ld: library not found for -lPods-XXXX clang: error: linker command failed with exit code 1 (use -v to see invocation)

原创 iOS組建化—私有庫

私有庫顧名思義是私有的,我在GitHub上使用的都是公開庫,出於安全與機密考慮,公司級開發都是使用私有庫。下面先說幾個概念。 一、索引庫 我們每創建一個組件都會帶有一個 xxx.podspec 的索引文件,這個文件包含組建框架的描述信息、