OC의 Block 기초 지식

1805 단어 OC의 block


//  1.함수 포인터 C 언어의 함수를 가리키는 포인터 (함수 이름을 저장하는 주소)
//  2.선택기는 OC를 저장하는 방법입니다. (저장하는 것도 방법명입니다.)
//  3.block도 전문적으로 저장하는 방법(함수체-함수 기능을 실현하는 코드 세그먼트 저장)
//
#import
void func1(){
NSLog(@ 함수 1);
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
       //===========1.회고 함수 포인터========
//반환 값 유형(* 함수 포인터 이름)(매개변수 목록)
//반환 값이 비어 있고 인자가 없는 함수를 가리키는 함수 바늘
        void (*pfunc)() = func1;
        
//이 함수 바늘로 함수 주소 저장
        pfunc = func1;
        
//함수 포인터를 통해 함수 호출
        pfunc();
        
//함수 바늘의 역할: 함수를 매개 변수로 전달
        
       //=========2.block 베이스=============
//'Block'은'지침'과 마찬가지로 한 유형에 대한 설명일 뿐이다.표현식 앞의 "*"를 통해 표현식이 포인터임을 판단합니다.우리는 표현식 앞의'^'를 통해 표현식이 Block이라는 것을 판단한다.바늘은 주소를 저장하는 데 사용되고, Block은 코드 블록을 저장하는 데 사용된다.
/block 코드 블록을 저장하는 방식과 함수 바늘로 함수를 저장하는 방식은 비슷하다.
//어떤 함수를 저장하고 싶은 코드 블록은 어떤 Block을 저장해야 하는지 설명해야 한다
        
//a.block의 주장
//반환값 형식(^block 변수 이름)(파라미터 목록);
        void (^block1)();//Block 변수 Block1을 설명합니다.이 Block 변수는 반환값이 없고 인자가 없는 함수체를 저장할 수 있다
        
//b.block의 초기화
//반환값 유형(^block 변수 이름)(매개 변수 목록) = ^(매개 변수 목록) {함수체};
        void (^block2)() = ^(){
        
//함수 쓰기 기능의 실현된 코드 세그먼트(함수체)
NSLog (@ "코드 세그먼트")
            
        };
        
//c. 할당
        block1 = ^(){
        
NSLog(@ 두 번째 코드 세그먼트)
        };
        
//d.block 호출
//block에 저장된 코드 세그먼트는 Block 호출을 호출할 때만 실행됩니다
//block 호출은 C 언어의 함수 호출과 같다
        block1();
        block2();
          
        
    }
    return 0;
}

좋은 웹페이지 즐겨찾기