原创 對Block用copy修飾的理解

MRC模式下,block默認是存檔在棧中的,隨時可能被系統回收,進行copy操作,就可以將block放在堆中,形成互相指引的效果,當然此時需要注意block閉環引起的內存泄露問題。如果使用retain操作,只會使其引用計數+1,block

原创 Objective-C 代碼混淆(自動)

爲了防止他人通過class-dump反編譯我們的APP後,嵌入惡意代碼,我們有必要對源碼進行混淆。 就其原理,就是用一個隨機的字符串在App編譯前替換我們需要混淆的關鍵字,讓別人反編譯之後也是一臉懵逼,無從下手。 這裏簡單說一下,混淆的時

原创 iOS 盲人模式開發

VoiceOver的使用 1、如何打開VoiceOver? iPhone設備 :通過 設置-通用-輔助功能-VoiceOver 打開。 2、如何關閉VoiceOver? iPhone設備 :三指同時觸摸屏幕,連續點擊屏幕三下。如果無效

原创 iOS 判斷系統版本

方案一 double systemVersion = [UIDevice currentDevice].systemVersion.boolValue; if (systemVersion >= 7.0) { /

原创 iOS 如何巧妙解決“一個任務需要等待另外一個任務完成後纔可以執行”的問題

看到標題,我想大部分iOS開發的童鞋能想到好幾種方案。比如下一個網絡請求必須依賴上一個網絡請求的結果纔可以進行,最簡單直白的方法是:“同步調用”。這裏所說的同步是指,等上一個網絡請求任務完成後,直接在返回數據的delegate或者bloc

原创 -initWithData: encoding:返回nil的解決辦法

方法:-initWithData: encoding: 是將一個NSData對象轉換爲NSString對象。 有時候,NSData非空,該方法卻返回一個nil,而不是返回一個NSString對象。 究其原因,無非是NSData中含有非

原创 Xcode8: file://XXX: warning: Missing file: XXX is missing from working copy 警告的解決辦法

Xcode8: file://XXX: warning: Missing file: XXX is missing from working copy 警告的解決辦法 產生時機: 我先創建了一個類,發現這個類的名字起的不是很專業,爲了簡

原创 error: RPC failed; curl 18 transfer closed with outstanding read data remaining

最近項目要進入到新一輪的spring,需要從git上克隆一份最新的代碼,在使用終端clone的時候,屢次出現如下錯誤: error: RPC failed; curl 18 transfer closed with outstandin

原创 Xcode 8 錯誤 dyld: Library not loaded: @rpath/libswiftCore.dylib 解決辦法

用Xcode 8真機調試時,出現下面的錯誤: dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /private/var/mobile/Con

原创 iOS 使用NSTimer中的那些坑

相信做iOS開發的童靴對NSTimer應該不會陌生,使用它遇到的坑還真不少。下面我就結合自己項目中遇到的問題,討論一下NSTimer在使用的中我們要避開的那些坑: 坑1:創建的方式 Apple API爲我們提供了一下幾種創建NSTimer

原创 iOS Base64編碼

參考鏈接:iOS開發探索-Base64編碼

原创 iOS 鎖

在開發過程中,使用多線程來可以提高程序運行效率。本文不說多線程,重點說說鎖的使用。 什麼時候需要用到鎖呢? 比如相親,多少單身狗的痛。你經過七大姑八大姨的介紹,爭取到了一個相親的機會,於是你就屁顛屁顛的去見人家姑娘了。結果殊不知,等你到了

原创 C語言 條件編譯(宏)

開始之前,我先列出在開發工程中經常用到的部分預處理指令: #define <#macro#> // 定義宏 #undef <#macro#> // 取消宏 #if <#condition#> // 如果給定的condition爲真,則編譯

原创 C語言 宏定義

簡單點,宏定義就是原封不動的替換,要檢查自己編寫的宏定義是否正確,只需要用宏替換相應的代碼(塊)即可。宏大致分爲兩種,一種是對象宏,另一種是函數宏(帶參數的宏)。 對象宏: #define SFNavigationBarHeigh

原创 Xcode8 註釋快捷鍵失效的解決方案

在Xcode7及以前,我們做註釋用的是一個第三方有名的插件 - VVDocumenter。 而升級到Xcode8後,VVDocumenter-Xcode 失效不能用了,也包括其他的插件都不能正常使用了,這是因爲Apple已經不鼓勵我們使