原创 Block的陷阱總結

1、引發內存泄露 假設一個類有兩個屬性:block和name; // // PHBlockTest.h // BlockTestTest // // Created by 項普華 on 2017/2/9. // 郵箱:

原创 在IOS中使用多線程

多線程是一個比較輕量級的方法來實現單個應用程序內多個代碼執行路徑。 在系統級別內,程序並排執行,程序分配到每個程序的執行時間是基於該程序的所需時間和其他程序的所需時間來決定的。 然而,在每個程序內部,存在一個或者多個執行線程,

原创 FFmpeg中結構體的認識

FFmpeg使用太複雜,一個重要的方面是包含的結構體太多,太複雜。我們來分析分析其中的幾個重要的結構體。 AVFormatContext:該結構體在使用FFmpeg的過程中會一直使用到,它的定義如下 /** * 格式化輸入輸出

原创 FFmpeg的初識

前言:一直以來,都想下決定寫博文,但是都因爲懶惰沒下手,這次被我老大強制要求我每週更新一篇博文,覺得也是一個契機。所以也就借這次機會開始試試。 音視頻的編解碼,一直給我的感覺是太難。FFmpeg作爲國內外使用最爲廣泛的跨平臺的音

原创 多線程的詳細使用

上篇轉載的博文有講解多線程的幾種使用,但是NSOperation的介紹不夠詳細,在此做一下補充。 NSOperation本身是不能直接用來操作的,需要繼承NSOperation實現相應的方法或者直接使用NSBlockOperat

原创 iOS中的RunLoop

RunLoop 是 iOS 和 OS X 開發中非常基礎的一個概念,這篇文章將從 CFRunLoop 的源碼入手,介紹 RunLoop 的概念以及底層實現原理。之後會介紹一下在 iOS 中,蘋果是如何利用 RunLoop 實現自動釋放池、

原创 iOS中的Copy

iOS提供了copy與mutableCopy方法,copy就是複製了一個不可變的對象,而mutableCopy就是複製了一個可變的對象,下面通過幾個實例來演示一下。 一、非容器類對象的copy與mutableCopy NSStri

原创 GCD中任務與隊列(一)

首先,GCD是一套基於C的併發編程(其實並不能理解爲多線程,因爲這個並不是自己來控制線程),使用的時候,我們不需要管理線程的任何生命週期,系統會自動幫我們管理。首先在底層是有一個任務隊列與線程池的概念,如果這個不懂,百度一下先。其次先理解

原创 GCD(二)

在開發中,我們經常會碰到一類問題,A任務開始執行的前提是B任務執行完成了,針對這種,如果只是簡簡單單的一個任務接一個任務,可能使用block 嵌套也可以做到,但是如果是C任務開始執行需要等A、B兩個異步任務完成,這個呢?這裏就需要使用到一

原创 gif轉化命令

gif轉化命令 ffmpeg -ss 00:00:03 -t 5 -i video.mov -s 640X360 -r “15” gif.gif

原创 Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources

mac os x 由於手動安裝rvm導致了命令行一直報錯 Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS

原创 iOS中 atomic、nonatomic、assign、copy、retain、readonly的定義與區別

atomic、nonatomic: atomic與nonatomic用來決定編譯器生成的getter和setter是否爲原子操作。 atomic:設置成員變量的@property屬性時,默認爲atomic,提供多線程安全屬性。在多線程

原创 IOS內存管理retain,assign,copy,strong,weak

IOS的對象都繼承於NSObject, 該對象有一個方法:retainCount ,內存引用計數。 引用計數在很多技術都用到: window下的COM組件,多線程的信號量,讀寫鎖,思想都一樣。 (一般情況下: 後面會討論例外情況) al

原创 iOS中RunTime的應用

大家都知道iOS是基於運行時機制,它是主要由C和彙編編寫的庫,對C進行了特殊處理,將結構體視爲對象,將函數視爲方法。C是編譯時語言,而OC是動態運行時語言,所以在編譯階段,儘管OC中的方法沒有實現也不會報錯,而C會報錯。在運行時,OC才進

原创 Swift實現單例模式

設計模式一直都是老生常談的,自己最近學習Swift,就拿設計模式來練練手吧 首先是單例模式 一、爲什麼要使用單例模式? 1、控制資源的使用,通過線程同步來控制資源的併發訪問(我覺得這個對客戶端來說,只是個理論而已) 2、控制實例產生的