原创 iOS開發之多線程編程 (1)

1.什麼是線程同步 此處的同步不是一起的意思,而是協同的意思。假設線程A,B,C,A完成某件事之後,通知B去做什麼,B又會通知C什麼時候做什麼。 還有比如我們有一個變量不允許多個線程一起訪問那麼就可以採用同步的方式。 2.資源競爭--死

原创 iOS開發之Block(2)

block 截獲局部變量的值 首先看一個例子: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autorelease

原创 iOS開發之Block(4)

塊總能修改實例變量 之前的文章中寫了塊可以截獲當前環境中的局部變量,如果想要修改就要使用 __block 說明符。 但是針對類實例方法中的塊,可以直接修改實例變量。 Worker.h #import <Foundation/Founda

原创 iOS開發之GCD(6)API Dispatch Group

首先看一段代碼: dispatch_queue_t globalDispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

原创 iOS開發之Block(1)

概念: 這樣理解Block,帶有局部變量的匿名函數。 blocks模式 block的語法和字面值。下面是一個block (與函數指針的區別,函數指針至少要知道函數的函數名,繼而取得指針)。 ^{

原创 iOS開發之多線程編程 (2)

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">上篇紀錄了NSThread進行多線程編程的使用

原创 iOS開發之GCD(7)API dispatch_barrier_async

牛逼閃閃的柵欄。 有這麼一種情況,你的程序目錄下有一個文件,在多線程編程環境下,需要讀取和寫入。 (1)併發着讀寫? 這樣讀的時候也許在寫,那麼可能讀到與內容不符的數據,可能因爲非法訪問導致程序異常終止。 (2)serial讀寫? 浪費資

原创 iOS開發之GCD(4)API dispatch_set_target_queue

作用1:改變Disaptch Queue的優先級 該方法可用於變更自己創建的Dispatch Queue的優先級。 dispatch_queue_t myDispatchQueue = dispatch_queue_create("c

原创 iOS開發之GCD(3)Main Dispatch Queue/Global Dispatch Queue

上一篇提到了如何創建dispatch queue,這篇記錄一下如何獲取系統標準提供的dispatch queue。 系統提供的Dispahch queue包括 Main Dispatch Queue和Global Dispatch Que

原创 iOS開發之GCD(2)API Dispatch Queue

生成dispatch queue的API: (1)生成Serial Dispatch Queue(一個線程,追加的任務按照追加順序一次執行) dispatch_queue_t mySerialDispatchQueue

原创 iOS開發之對象的生命週期

對象生命週期(Object life cycle) 在OC中一個對象的生命週期就是指,這個對象從創建到銷燬的運行時(runtime)的生命。 一個對象的出現有兩個途徑: (1)當程序顯示的創建並初始化它的時候。 (2)當對象作爲另一個

原创 iOS開發之GCD(1)初探

概念: GCD即Grand Central Dispatch,它是異步執行任務的技術之一。一般將應用程序中技術的線程管理用的代碼在系統層級上實現。開發者只需要將定義好的任務追加到dispatch queue中,GCD就能生成必要的線程並按

原创 iOS開發之Block(3)

tips:-rewrite-objc 選項將源代碼編譯爲C++源代碼 首先是c語言源文件中實現block: #include <stdio.h> int main(int argc, const char * argv[]) {

原创 iOS開發之GCD(5)API dispatch_after

針對情況: 某個任務我想要在n秒後執行,這種情況可以中dispatch——after來處理。 double delayInSeconds = 2.0; dispatch_time_t popTime = dispatc

原创 Java中的抽象類和抽象函數

(1)抽象函數的語法特徵只有函數定義,沒有函數體的函數。example:abstract void fun();作用:抽象出來,用來被子類override。可以抽象出來的統一方法,但是實現起來會有若干種不同的方式。(2)抽象類的語法特徵作