Objective-C에서 블록(block)은 C언어에서의 함수 포인터와 비슷한 역할을 합니다. 블록은 코드 덩어리를 캡슐화하고 나중에 실행될 수 있도록 저장하는 객체입니다. 블록은 일반적으로 함수를 인수로 받는 함수나 Grand Central Dispatch (GCD)와 같은 비동기 작업을 수행하는 API에 매우 유용합니다.
Objective-C에서 블록(block)을 선언하는 방법은 다음과 같습니다.
- 로컬 변수로 선언하는 방법:
objectiveCopy codereturnType (^blockName)(parameterTypes) = ^returnType(parameters) {
// 블록 내부에서 수행할 코드
};
- 프로퍼티로 선언하는 방법:
objectiveCopy code@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);
- 메서드 매개변수로 선언하는 방법:
objectiveCopy code- (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;
- 메서드 호출 시 인자로 전달하는 방법:
objectiveCopy code[someObject someMethodThatTakesABlock:^returnType (parameters) {
// 블록 내부에서 수행할 코드
}];
- C 함수의 매개변수로 선언하는 방법:
objectiveCopy codevoid SomeFunctionThatTakesABlock(returnType (^blockName)(parameterTypes));
- typedef로 선언하는 방법:
objectiveCopy codetypedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {
// 블록 내부에서 수행할 코드
};
이러한 다양한 방법을 사용하여 Objective-C 언어 및 API의 다른 부분과 블록을 통합하고 다양한 상황에서 블록을 사용할 수 있습니다.