진행중인 Xcode 프로젝트에서 뷰를 작성하면 레이아웃을 테스트하는 시간이 오래 소요될 가능성이 있습니다. 또한 뷰를 작성할 때, 기존 코드와 연관된 의존성이 생길 가능성이 있습니다. 이러한 부작용을 줄이고자 뷰를 작성하기전에 Playground 환경에서 뷰를 테스트가능한 환경을 만들어보고자 합니다. 새 Playground 프로젝트 생성하기 빈 프로젝트를 생성하고 page의 맨 위에 다음의 코드를 작성합니다. import PlaygroundSupport `PlaygroundSupport` 프레임워크는 라이브 뷰 기능을 제공합니다. 여기서 라이브 뷰는 작성한 코드를 실행해서 보여주는 역할을 합니다. 라이브 뷰 설정하기 라이브 뷰로 작업하기 위한 최소한의 설정이 필요합니다. import PlaygroundS..
Dynamic Type이란 > 사용자가 화면의 콘텐츠 크기를 사용자 정의할 수 있는 기능입니다. iOS 7 사용자부터는 설정>디스플레이 및 밝기>텍스트 크기 설정에서 폰트 크기를 조정할 수 있는 기능을 사용할 수 있습니다. 아이폰 기본앱인 메신저, 연락처, 달력, 건강 앱에도 dynamic type이 적용되어 있습니다. WWDC 17: Building Apps with Dynamic Types 발표에 따르면 dynamic type을 적용하기 위해서는 세 가지 목표가 있어야 합니다. 첫째, 텍스트는 유저가 읽기에 충분해야 한다. 둘째, 텍스트는 완전히 읽을 수 있어야 한다. 셋째, 모든 텍스트 크기에 대해 앱 UI가 아름다워야 한다. 다음은 UILabel을 사용하여 앱에서 발생할 수 있는 예시입니다. 첫 ..
오류 처리 방법 Swift에서 오류를 처리할 수 있는 방법은 다음과 같다. nil 또는 error enum case 사용하기: 오류 처리의 가장 간단한 형태는 오류가 발생한 함수로 부터 nil 또는 .error case (Result enum 타입을 반환 타입으로 사용하는 경우)를 반환한다. 많은 상황에서 정말 유용할 수 있지만, 지나치게 사용하면 사용하기 번거로운 API로 이어질 수 있고 또한 문제를 발생시키는 로직을 숨길 위험이 있다. throw Error 사용하기: caller가 do ~ try ~ catch 패턴을 사용하여 잠재적인 오류를 처리해야 한다. 또는 try? 를 사용하여 오류를 무시할 수 있다. assert()과 assertionFailure() 사용하기: 특정 조건이 참인지 확인하라...
Collection View는 레이아웃 객체와 직접적으로 작동하며 전체 레이아웃 프로세스를 관리한다. 레이아웃 프로세스에 사용되는 핵심 메서드는 다음과 같은 중요한 작업을 처리한다. 스크롤 가능한 내용 영역의 크기 지정 셀 및 뷰를 배치할 수 있도록 레이아웃을 구성하는 대한 attribute 객체를 제공 레이아웃 프로세스는 다음의 순서대로 수행된다. prepareLayout: 배치 정보에 필요한 초기 계산을 수행 collectionViewContentSize: 초기 계산에 따라 전체 콘텐츠 영역의 크기를 반환 layoutAttributesForElementsInRect: 지정된 사각형에 있는 셀 및 뷰의 속성을 반환 invalidateLayout: 레이아웃을 무효화한다. 레이아웃 준비 레이아웃 주기가 시..
프로세스 운영체제로부터 시스템 자원을 할당받는 작업의 단위 각각 독립된 메모리 영역(Code, Data, Stack, Heap 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다. (Ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용) 쓰레드 프로세스 내에서 실행되는 여러 흐름의 단위 쓰레드는 프로세스 내에서 Stack을 따로 할당받고 Code, Data, Heap 영역은 공유한다. 쓰레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스 내의 ..
운영체제가 하는 일 컴퓨터 시스템은 대개 하드웨어, 운영체제, 응용프로그램 및 사용자의 네 가지 구성요소로 구분된다. 운영체제는 사용자와 다양한 응용프로그램 간의 하드웨어 사용을 제어하고 조정한다. 즉, 실행중인 응용 프로그램들이 작업 수행에 필요한 CPU, 메모리, 입출력 장치 등의 하드웨어 자원을 할당하는 것을 제어한다. 컴퓨터에 대한 사용자의 관점은 사용되는 인터페이스에 따라 달라진다. 이러한 시스템은 한 사용자가 자원을 독점하도록 설계되었으며 목표는 사용자가 수행하는 작업을 최대화하는 것이다. 사용자 관점에서 운영체제는 대부분 사용의 편의성을 위해 설계된다. 그러나 일부 컴퓨터는 사용자의 개입 없이 작동하도록 설계되기도 한다. 시스템 관점에서 운영체제는 하드웨어와 가장 밀접하게 연관된 프로그램으로..