[Objective-c 베이스 - 3.3] Block 데이터 유형

6321 단어 Objective-C
A. 개념
1. Block 유사 함수
(1) 코드 저장 가능
(2) 반환값 있음
(3) 유형삼
2. Block의 플래그:^
 1     //          block

 2     void (^myblock)() = ^{ //     ,    ()

 3         NSLog(@"      block");

 4     };

 5    

 6     myblock();

 7  

 8     //         block

 9     int (^sum)(int a, int b) = ^(int a, int b){

10         return a + b;

11     };

12    

13     int c = sum(10, 11);

14     NSLog(@"%d", c);
 
3. 코드 블록 밖의 데이터에 접근할 수 있다
1     int a = 10;

2     void (^block)();

3     block = ^{

4         NSLog(@"a = %d", a);

5     };

6     block();
out:
2014-11-15 09:25:34.766 04-block[1355:303] a = 10
 
4. 코드 블록 밖의 부분 변수는 수정할 수 없습니다.
1     int a = 10;

2     void (^block)();

3     block = ^{

4         a = 20; //      , block             

5         NSLog(@"a = %d", a);

6     };

7     block();
 
해결: 로컬 변수에 ""추가block 키워드
1     __block int a = 10;

2     void (^block)();

3     block = ^{

4         a = 20; // error

5         NSLog(@"a = %d", a);

6     };

7     block();
out:
2014-11-15 09:28:52.814 04-block[1376:303] a = 20
 
5. typedef 사용
 1 typedef int (^MyBlock) (int, int);

 2  

 3     MyBlock sumBlock;

 4     sumBlock = ^(int a, int b){

 5         return a + b;

 6     };

 7    

 8     MyBlock minusBlock;

 9     minusBlock = ^(int a, int b){

10         return a - b;

11     };

좋은 웹페이지 즐겨찾기