1.傳值頁面宣告block屬性
//在想要回傳的介面中定義,block必須用copy來修飾(*注:secondviewcontroller.h中宣告)
//@property
(nonatomic, copy)nsarray *(^block)(nsstring *string);有返回值的後面必須兩個括號
@property
(nonatomic, copy)void(^block)(nsstring *string);
2.傳值頁面block裝箱操作
self.block(@"蘋果");//所謂裝箱,就是把要傳遞的字串"蘋果"賦值給引數(block引數定義的是字串)這個也是控制何時觸發的,當程式走到這行**時, 程式會跳轉到block內部, 執行方法
3.被傳值的頁面block卸貨操作
//初始化乙個secondvc物件
secondviewcontroller *secondvc. = [[secondviewcontroller alloc]init];
secondvc.block = ^(nsstring *string)
;//block傳值都必須是返傳,因為程式經過這段**時會判斷string有沒有值, 如果沒有就會越過block內部, 如果前一頁賦值給string引數, 程式馬上就會跳轉到block內部中去, 跟協議傳值大同小異
//關於block的記憶體問題
//1.如果要使用block作為乙個屬性,必須用copy
//2.如果用copy修飾的block中含有"self."都必須使用乙個弱引用的指標代替
//arm寫法: __weak +型別 +指標名 = self;
//mrc寫法: __ block +型別 指標名 = self;
//block的記憶體位址轉移(m r c):
//1. 如果block變數內沒有使用任何外部變數,block就在全域性區
//2. 如果block內部使用了外部變數,block就被轉移到棧區
//3.如果block被copy,就被轉移到堆區
//block的記憶體轉移(a r c)
//1. 同上
//2.如果block內部使用了外部變數,直接就轉移到堆區
IOS中 Block簡介與用法
block簡介 block的實際行為和function很像,最大的差別是在可以訪問同乙個scope的變數值。block實體形式如下 傳入引數列 block實體開頭是 接著是由小括號所包起來的引數列 比如 int a,int b,int c 行為主體由大括號包起來,專有名字叫做block litera...
IOS中 Block簡介與用法
block簡介 block的實際行為和function很像,最大的差別是在可以訪問同乙個scope的變數值。block實體形式如下 傳入引數列 block實體開頭是 接著是由小括號所包起來的引數列 比如 int a,int b,int c 行為主體由大括號包起來,專有名字叫做block litera...
IOS中 Block用法高階一
之前沒有寫部落格的習慣,總是一些 塊存在電腦,u盤,雲盤,就好像收藏古物一樣,和同事朋友交流討論到某個功能時也難一時看到 今後開始和剛入門的菜鳥們分享吧。它是一種比較特殊的資料型別。它可以儲存一段 在合適的時候取出來呼叫。定義格式 返回值型別 block 變數名 形參列表 形參列表 牢記定義格式 其...