Today I Learned#11

무엇을 배웠는지 간단하게 기록합니다.
Aug 01, 2023
Today I Learned#11

Compiler Directives

기존 Xcode 환경에서는 현재 작업 중이던 내용이 후순위로 밀려 다른 작업을 해야하거나 협업을 할 때 시스템 상 표시하는 것이 두 가지 있었다.
//TODO: ~을 해야합니다. //FIXME: ~을 고쳐야합니다.
하지만 위 두 가지는 주석 역할이기 때문에 컴파일러 실행시 표시가 되는 기능은 없다. 그래서 이런 주석을 나타내려면 개인적으로 빌드 스크립트를 작성해서 위 주석이 표시될 수 있도록 하는 등 또 다른 작업이 필요 했다. 하지만 컴파일러 지시어가 생기면서 이러한 문제를 해결할 수 있게 되었다.
#warnings("Something is wrong") #errors("You should be fix it")
컴파일러 지시어를 적절한 곳에 활용한다면 빌드시 경고 혹은 에러를 발생시키도록 유도할 수 있다.

Single Asset App Icon

기존 Xcode 프로젝트를 진행했을 때도 제일 불편했던 것이 바로 시스템 크기마다 따로 앱 아이콘 이미지를 준비해야 했던 점이었는데, Single Size 기능을 활용하면 단일 크기의 아이콘 이미지를 사용해서 자동으로 크기를 조정할 수 있게 되었다.
디바이스 정보나 운영체제에 맞게 필요에 따라 단일 크기(1024x1024)이미지가 자동으로 재정의 된다는 것은 픽셀 또는 포인트마다 미세한 조정까지 필요한 여러 디자인 요소를 적용하는 것에 대한 부담감을 덜어주게 되었다.

Storyboard References

스토리보드를 활용해서 UIKit 학습을 진행하고 있지만, 사실 개인적으로 스토리보드로 UI요소를 배치하는 것에 부정적이다. 그 이유는 다음과 같다.
  • Git & GitHub 활용 협업 시 잦은 Conflict 발생
  • 여러 개의 ViewController가 하나의 스토리보드를 의존하게 되면서 빌드 실행 시간 지연
  • 개인의 Xcode User Data 설정이 전부 다르기 때문에 인터페이스 빌더 오류 발생 및 Xcode 실행 불가
그래서 확실한 아키텍처 패턴 설정과 컨벤션과 같은 가이드라인을 구체적으로 설계하고 지키지 않는 이상 문제가 발생할 수 밖에 없기 때문에 요즘은 완전히 코드로 작성하는 방법도 알아보고 있는 중이다. 하지만, 스토리보드의 특성과 구조를 파악하는 것도 Apple 플랫폼에서 서비스할 수 있는 애플리케이션을 개발하는데 다양한 지식을 얻을 수 있는 것도 사실이다.
스토리보드 레퍼런스는 이러한 문제를 조금이나마 해결해줄 수 있는데, 한마디로 정의하자면 다음과 같다.
📄
하나의 스토리보드는 하나의 뷰 컨트롤러를 가져야 한다.
Interface Builder에서 여러 스토리보드 파일 간에 뷰 컨트롤러 및 스토리보드에 정의된 Segue들을 논리적으로 나누어 연결한다. 그렇기 때문에 특정 스토리보드를 하나의 데이터 흐름으로 선형화할 필요 없이 다른 스토리보드에서도 손쉽게 참조 및 사용하는 것이 가능하다.
Share article

김유진의 블로그