광어네 맛집

[Objective - C]Block & 클로저 (공부용) 본문

Objective-C [레거시 뿌수기!]/Objective-C

[Objective - C]Block & 클로저 (공부용)

Lautner Jacob 2022. 4. 4. 09:11
728x90
반응형

요즘은 Swift로는 라이브러리 만드는 중 ㅎㅎ..
라이브러리 만드는 것도 이래저래 안되는 것도 있어서 개발 경험치 오르는 중 !

아무튼 이번 포스팅은 간단히 Block에 대해서 설명해볼까 함

Swift 에서는 Closure가 여기에 해당하는 듯!

Objective C block 너무 복잡복잡

 

기본 형태는 앞에 반환타입 중간에는 파라메터 ^(캐럿)을 사용하면 된다

처음 코드 봤을 때는 이게 뭔가 했음
솔직히 이게 맞는가 싶기도 함

Block를 작성할 때 ^(캐럿)을 적는데 블록을 표시하는 심볼 같은 거라고 함
이거 찾는다고 조금 헤맸음

Void (^blockName)(void) = ^{
    // 내용 작성
}

 

사용은 아래처럼도 쓰는 거 같았음

- (void) testNaming:(NSString)naming completion:(void(^)(void)callBack {
    NSLog(@"%@", naming)
    callBack()
}

 

안익숙해서 사용 완성이라도 됐으면 좋겠는 바람 ㅎㅎㅎ..

 

[차이점]

Swift closure에서는 refernce type 인데 captureList를 쓰면 value type으로 바뀌는 거 처럼
Objective C 의 경우 기본이 Value type인데 captureList를 쓰면 reference Type이 됨!

추가로 Swift CaptureList는 '[ , ]' 를 쓰면 되지만 
Objective C에서는 _ _ block을 이용하여 Type을 변환함

 

[주의할 점]

너무 많이 쓰면 메모리 문제가 난다고 함..
아직까지는 코드 읽는 정도라서 체감이 안되지만 ㅎㅎㅎ
MRC에서는 조금 생각하면서 개발해야 함

 


가볍게 이렇게 내용을 살펴봤는데

심화된 내용은 추후 공부해보고 다시 올리기로!

일단 맛보기로만

 

오늘도 화이팅!

728x90
반응형