iOS 블록 기반

1456 단어
block의 중요성을 모두가 알고 있다고 믿는 것은 의심할 여지가 없다. 그 자체가 코드를 봉하여 이 코드를 변수로 삼아 block() 방식으로 리셋한다.Block의 이런 메커니즘은 과 매우 비슷하다.나의 이해는 바로 Block은 에 해당한다는 것이다.

정의


반환 유형(^block 유형 이름)(block 참조):
void (^myBlock)() = ^(){
    NSLog(@"---    block---");
};

int (^sumBlock)(int, int) = ^(int a, int b) {
    return a + b;
};
    :  
int a = 10;
   

   :
void (^ block)();
block = ^{
    NSLog(@"---     block---");
};

    :
int sum(int a, int b)
{
    return a + b;
}

2. Block 호출

int c = sumBlock(10,10);

3. Block 접근 외부 변수

  • Block 내부에서 외부에 접근할 수 있는 변수
      int a = 10;
      void (^ block)();
      block = ^{
          NSLog(@"a=%d",a);
      };
    
  • 기본적으로 Block 내부에서 외부의 국부 변수를 수정할 수 없음
      int a = 10;
      void (^ block)();
      block = ^{
          a = 20;
      };      
      //     
    
  • 국부 변수에 __block 키워드를 더하면 이 국부 변수는 Block 내부에서 수정할 수 있다
      __block int a = 10;
      void (^ block)();
      block = ^{
          a = 20;
      };
    
  • 4. typedef를 이용하여 Block 유형 정의

     typedef int (^myBlock)(int, int);
     myBlock block = ^(int a, int b) {
        return a + b;
     };
    

    띄어쓰기:
    typedef int (^myBlock)(int, int);
     myBlock block; 
     block = ^(int a, int b) {
        return a + b;
     }; 

    좋은 웹페이지 즐겨찾기