//-------1、定義函式-----
//1、函式
int sum(int a,int b)
//------------------2、宣告---------
//2、宣告函式指標【將sum換成*p就能夠了】
int (*p)(int a,int b);
//(1)宣告block【將sum換成^myblock就能夠了】
int (^myblock)(int a,int b);
//舉一反三
void (^myblock2)(void);
- (void)viewdidload
;
//---------------------4、呼叫------------------
//4、呼叫
int result = p(3,6);
nslog(@"%d",result);
//(3)呼叫
int resultblock = myblock(3,6);
nslog(@"%d",resultblock);
myblock2 = ^(void)
;myblock2();
//---------------------二、檔案之間傳值------------------
//block的呼叫
person *person = [[person alloc]init];
//1-2實現block
// ^int(int a, int b)
//把person的10和20傳到本檔案裡
//區域性變數到block中是常量。如需改變值則須要在宣告前面加 __block
__block int number = 10;
int resultps = [person testmethod:^int(int a, int b) ];
//typedef 方式建立
int resultps2 = [person testmethod2:^int(int a, int b) ];
nslog(@"resultps:%d resultps2:%d",resultps,resultps2);
}@end
person.h
#import //這裡的personblock是型別名字,能夠理解為int
typedef int(^personblock) (int a,int b);
@inte***ce person : nsobject
//1-1在引數中宣告【int(^)(int a, int b】
- (int)testmethod:( int(^)(int a, int b) )block;
//這裡不須要加星號
- (int)testmethod2:(personblock)block;
@end
person.m
#import "person.h"
@implementation person
//1-3呼叫block
- (int)testmethod:( int(^)(int a, int b) )block
- (int)testmethod2:(personblock)block
@end
block系列重新整理1
main.m import import person.h int sum int a,int b int main int argc,const char argv int myblock1 int,int int a,int b 呼叫block result myblock 10,20 prin...
Block的使用 初探Block
看了兩天的block。網上是有非常多解說與教程,也有講得非常好的。這裡就主要解說下我的理解與收穫。歡迎拍磚。所謂block。我覺得應該是乙個閉包函式。而閉包,就是說block以及內部全部的變數生命週期都在其呼叫函式的生命週期內。它一被呼叫完畢,則會被立刻釋放。這裡不講執行機制,僅僅簡要地講基本的用法...
Block中 block實現原理
三.block中 block實現原理 我們繼續研究一下 block實現原理。1.普通非物件的變數 先來看看普通變數的情況。import int main int argc,const char ar myblock return 0 把上述 用clang轉換成原始碼。struct block byr...