原创 MD5 加密 和Base64加密

MD5加密方法: - (NSString *) md5:(NSString *) input {     const char *cStr = [input UTF8String];     unsigned char diges

原创 iOS --關於淺拷貝和深拷貝

關於iOS的淺拷貝和深拷貝。 定義:        淺拷貝:淺拷貝是對內存地址的複製。讓目標對象的指針和源對象的指針指向同一片內存空間。原對象的引用計數+1。可以理解成創建了一個指向原對象的新指針而已,並沒有創建一個新的對象。      

原创 多線程、NSThread 、NSOperation、GCD、線程同步

概覽 大家都知道,在開發過程中應該儘可能減少用戶等待時間,讓程序儘可能快的完成運算。可是無論是哪種語言開發的程序最終往往轉換成彙編語言進而解釋成機器碼來執行。但是機器碼是按順序執行的,一個複雜的多步操作只能一步步按順序逐個執行。改

原创 CYLTabBarController的使用

CYLTabBarController 是一個自定義的TabBarController, 集成非常簡單 https://github.com/ChenYilong/CYLTabBarController 1.首先使用CocoaPods

原创 iOS --關於循環引用

iOS之循環引用問題 循環引用的產生 內存分佈區域 內存管理機制 循環引用常見問題 循環引用的產生 內存中和變量有關的分區:堆、棧、靜態區。其中,棧和靜態區是操作系統自己管理的,對程序員來說相對透明,所以,一般我們只需要關注堆的內存分配,

原创 導航欄隱藏的正確方式

簡介 在項目中經常碰到首頁頂部是無限輪播,需要靠最上面顯示.有的設置導航欄爲透明等一系列的方法,這個可以藉助第三方.或者乾脆簡單粗暴的直接隱藏掉導航欄.可是push到下一個頁面的時候是需要導航欄的,如何做了,這裏給出兩種方法.

原创 CALayer動畫

一、iOS動畫 iOS中實現一個動畫十分簡單,在view層面上通過調用 [UIView animateWithDuration:duration animations:^{ //執行動畫 }] 但是它不能控制動畫的

原创 iOS CornerStone的用法和心得

IOS Cornerstone的使用方法 簡介: CornerStone是Mac OS X系統下非常好用的一款svn工具,至XCode5之後,本人覺得XCode5的Svn實在讓人不得要領,而CornerStone配置雖不難,但也有幾

原创 iOS 多個網絡請求並行/併發處理

需求: 同時存在A,B,C,D四個網絡請求,要求同時發起四個網絡請求,當四個網絡請求都返回數據以後再處理事件E。 解決方法: /創建信號量/ dispatch_semaphore_t

原创 HTTP請求錯誤400、401、402、403、404、405、406、407、412、414、500、501、502解析

HTTP 錯誤 400 400 請求出錯 由於語法格式有誤,服務器無法理解此請求。不作修改,客戶程序就無法重複此請求。 HTTP 錯誤 401 401.1 未授權:登錄失敗 此錯誤表明傳輸給服務器的證書與登錄服務器所需的證書不匹配。 請與

原创 nonatomic, retain,weak,strong用法詳解

strong weak strong與weak是由ARC新引入的對象變量屬性 ARC引入了新的對象的新生命週期限定,即零弱引用。如果零弱引用指向的對象被deallocated的話,零弱引用的對象會被自動設置爲nil。 @propert

原创 TCP/IP,http,socket,長連接,短連接

概要:     之前對這幾個概念有點糊塗,查閱了些資料,稍微概括下他們的區別吧。如有錯誤,請拍~~~ 先看圖: TCP/IP是什麼?    TCP/IP是個協議組,可分爲三個層次:網絡層、傳輸層和應用層。    在網絡層有IP協議、I

原创 蘋果開發者賬號註冊和鄧白氏申請流程

準備工作 : 一張visa或者萬事達國際信用卡(開通visa或master功能的信用卡)、公司郵箱、公司網站(需與郵箱後綴一致)。 更正:有小夥伴提醒我目前銀聯也支持了.就沒必要這麼麻煩了 蘋果企業開發者賬號,分爲兩種。第一種E

原创 Leak 內存泄漏檢測

第一次使用Leak對項目進行內存泄漏的檢測,也是查閱了許多資料,算是可以做到發現問題並解決問題。 我的項目泄漏情況是這樣的: 圖1 滿屏的紅叉讓人心慌,那麼如何找到泄露的位置呢? 首先要選中滿是紅叉的那一行,然後在這裏

原创 枚舉和結構體

1.枚舉類型 //推薦的定義枚舉類型的方式 typedef NS_ENUM(NSInteger, RWTLeftMenuTopItemType) { RWTLeftMenuTopItemMain, RWTLeftMenu