OC 언어-block

Block은 코드를 저장하는 데 사용됩니다. 로고: ^
block은 함수와 비슷해서 코드를 저장할 수 있고 반환값도 있고 행참도 있고 호출방식도 같다.
Block에 인삼이 없으면 뒤에 있는 작은 괄호를 생략할 수 있습니다.
1. 새 참조가 없는 Block 변수 정의
void(^myBlock)() = ^{
    NSlog(@"----------")
};
//     block    block     
myBlock();

2. 매개 변수가 있는 Block
int(^sumBlock)(int, int) = ^(int a, int b)
{
    return a + b;
};
int c  = sumBlock(10 ,20);

3. 블록을 하나 또는 여러 직선으로 출력할 수 있도록 작성한다.
void(^lineBlock)(int) = ^(int n)
{
    for(int i = 0; i<n; i++){
        NSLog(@"------------");
    }
};
//   3   
lineBlock(3);

4. typedef를 사용하여 Block 정의
typedef int (^MyBlock)(int, int);
MyBlock sumBlock;
sumBlock = ^(int a, int b){
    return a+b;
};

혹은
MyBlock sumBlock = ^(int a, int b){
    return a+b;
};

주의: 호출할 때 MyBlock을 사용할 수 없고 변수 이름으로 호출합니다
//       
NSLog(@"%d-%d",sumBlock(10, 9));

5. Block 내부에서 바깥에 접근할 수 있는 변수
기본적으로 bock 내부에서 외부의 국부 변수를 수정할 수 없습니다
로컬 변수에 더하기Block 키워드, 이 부분 변수는 Block 내부에서 수정할 수 있습니다
int  a  = 10;
_block int  b = 20;
void(^block)();
block = ^{
    NSLog(@"a = %d,  a);
    b = 90;
}

좋은 웹페이지 즐겨찾기