상세 컨텐츠

본문 제목

[Swift] Then Framework (프레임워크) 사용해보기

iOS 캐기/Swift 캐기

by Atlas 2022. 2. 4. 23:14

본문

728x90
반응형

시나리오 : SnapKit으로 코드베이스를 전향하면서 Then 프레임워크를 사용하면 편하다해서 써보기로 함 

 

AS-IS

Swift의 기본문법으로

클로저를 통해서 인스턴스생성을 하려고하면 클로저 내부에서 self 프로퍼티 사용이 불가함으로

새로운 인스턴스를 생성해서 return 시켜줘야함

var someLabel:UILabel = {
	//새로운 인스턴스를 생성하고 해당 인스턴스를 return
        return #{새로운 인스턴스}
}()

 

또 안된다고하면 꼬-옥 해보고 싶어져서 해봄

역시나 인스턴스 멤버 'self'를 'CustomView' 유형에서 사용할 수 없다고 에러를 툭...던져주는 

 

via GIPHY

 

그런 연고로 이와같이 작성을 해야함.

var someLabel:UILabel = {
        var nameLbl = UILabel()
        nameLbl.text = "Then Potato"
        nameLbl.textAlignment = .center
        nameLbl.textColor = .blue
        return nameLbl
}()

 

TO-BE 

Then 프레임워크를 쓰면 가독성이 좋아지고, 직관적이고, 깔끔하다 라는 표현을 들었다.

하지만 "백문이 불여일타" 이니께 스스로가 그렇게 판단하기 위해 해봄

 

Then 프레임워크 import 및 적용

보다 간단하게 표현하기 위한 1차 작업 -> 스위프트는 타입추론이 가능함

var someLabel2 = UILabel().then { lbl in
        lbl.text = "Then Potato"
        lbl.textAlignment = .center
        lbl.textColor = .green
}

 

보다 간단하게 표현하기 위한 2차 작업 -> shorthand arguments name 사용 

 var someLabel2 = UILabel().then {
        $0.text = "Then Potato"
        $0.textAlignment = .center
        $0.textColor = .green
 }

 

 

이렇게 2차 리터치? 작업까지 하니 깔끔해보이고 가독성도 좋아보이는 거 같음 

 

마무리 

AS-IS 코드와 TO-BE 코드를 비교해보면 

주황색 박스 부분의 "인스턴스 생성 및 return" 하는 부분의 코드량이 줄어들고, Then 프레임워크 사용을 위한 파란박스로 표기된 

부분이 추가가 됨 

 

개인적으로 코드량이 조금 늘어나더라도 가독성을 더 중요시하게 생각하는 편임

Then 프레임워크를 사용한 첫 인상은 코드량도 줄고 가독성도 좋아지는 일석이조 너낌!

 

 

찐마무리는 역시 빌드하고 실행까지 해보는것으로 끝!

 

관련자료

GitHub : 

https://github.com/PotatoArtie/Potato-iOS/tree/master/Labs/ThenPotato

 

반응형

관련글 더보기

댓글 영역