iOS61 [iOS 기초 - 01] 뷰 컨트롤러(View Controller) 뷰 컨트롤러(View Controller) - 하위에 있는 콘텐츠를 관리하고, 보여주거나 숨기는 등의 구성을 조정하는 역할 - 내부적으로 뷰를 포함하고 있으며, 뷰에 대한 관리를 주로 한다. - 대부분의 뷰 컨트롤러는 화면 전환이 발생할 때 다른 뷰 컨트롤러와 서로 통신하고 조정하는 일을 수행한다. 위의 그림처럼 화면을 구성하는 데에는 세 가지 주요 객체가 사용된다. UIScreen : 기기에 연결되는 물리적인 화면을 정의하는 객체 UIWindow : 화면 그리기 지원 도구를 제공하는 객체 UIView : 그리기를 수행할 객체 세트 수많은 UIView 객체가 모인 Window는 이들을 화면으로 구성하여 Screen 객체에 보내고, Screen 객체는 이를 물리적인 기기에 표시한다. 이 객체들은 모두 UI.. 2021. 10. 14. [Swift] Chapter 24. 타입 중첩 스위프트에는 타입 내부에 타입을 정의하고 구현할 수 있다. 이처럼 타입 내부에 새로운 타입을 선언해준 것을 중첩 타입(Nested Type)이라고 부른다. 타입 내부에 새로운 타입을 정의하고 싶다면, 자신의 정의 내부에 새로운 타입을 정의하고 구현해주기만 하면 된다. 24.1 중첩 데이터 타입 함수 중첩처럼 클래스 내부에 새 클래스, 클래스 내부에 새 구조체, 구조체 내부에 새 열거형 등의 타입을 중첩해서 타입 내부에 새 타입을 정의할 수 있다. /* 코드 24-1. 중첩 데이터 타입 구현 */ class Person { enum Job { case jobless, programmer, student } var job: Job = .jobless } class Student: Person { enum S.. 2021. 10. 13. [Swift] Chapter 23. 프로토콜 지향 프로그래밍 23장 - 프로토콜 지향 프로그래밍 스위프트의 표준 라이브러리에서 타입과 관련된 것을 살펴보면 대부분이 구조체로 구현되어 있다. 구조체는 상속이 되지 않지만 프로토콜과 익스텐션, 제네릭 등으로 다양항 공통 기능을 갖도록 구현할 수 있다. 23.1 프로토콜 초기구현 익스텐션은 기존 타입의 기능을 확장하며, 프로토콜은 프로토콜을 채택한 타입이 원하는 기능을 강제로 구현한다. 그런데 특정 프로토콜을 정의하고 여러 타입에서 이 프로토콜을 준수하게 만들어 타입마다 똑같은 메서드, 프로퍼티, 서브스크립트 등을 구현해야 한다면 많은 코드를 중복 사용해야 하며, 유지보수는 힘들어 질 것이다. 이때 필요한 게 바로 익스텐션과 프로토콜의 결합이다. [코드 20-5]에서 중복 코드를 제거해보자. /* 코드 23-1. 익스텐.. 2021. 10. 13. [Swift] Chapter 22. 제네릭 제네릭을 이용해 코드를 구현하면 어떤 타입에도 유연하게 대응할 수 있다. 또한 제네릭으로 구현한 기능과 타입은 재사용하기도 쉽고, 코드의 중복을 줄일 수 있기에 깔끔하고 추상적인 표현이 가능하다. 제네릭을 사용하고자 할 때는 제네릭이 필요한 타입 또는 메서드의 이름뒤의 사이에 제네릭을 위한 타입 매개변수를 써주어 제네릭을 사용할 것임을 표시한다. 제네릭을 사용하고자 하는 타입 이름 제네릭을 사용하고자 하는 함수 이름 (함수의 매개변수...) /* 코드 22-2. 프로토콜과 제네릭을 이용한 전위 연산자 구현과 사용 */ prefix operator ** prefix func ** (value: T) -> T { return value * value } let minusFive: Int = -5 let fi.. 2021. 10. 13. [Swift] Chapter 21. 익스텐션 21.1 익스텐션이란 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있다. 기능을 추가하려는 타입을 구현한 소스 코드를 알지 못하거나 볼 수 없다 해도, 타입만 안다면 그 타입의 기능을 확장할 수도 있다. 스위프트의 익스텐션이 타입에 추가할 수 있는 기능은 다음과 같다. 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 타입 메서드 / 인스턴스 메서드 이니셜라이저 서브스크립트 중첩 타입 특정 프로토콜을 준수할 수 있도록 기능 추가 익스텐션은 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의할 수는 없다. 클래스의 상속과 익스텐션을 비교해보자. 클래스의 상속은 클래스 타입에서만 가능하지만 익스텐션은 구조체, 클래스, 프로토콜 등에 적용이 가능하다. 또, 클래스의 상.. 2021. 10. 11. [Swift] Chapter 20. 프로토콜 20.1 프로포콜이란 프로토콜은 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한다. 어떤 프로토콜의 요구사항을 모두 따르는 타입은 '해당 프로토콜을 준수한다'고 표현한다. 타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야 한다. 즉, 프로토콜은 정의를 하고 제시를 할 뿐이지 스스로 기능을 구현하지는 않는다. 20.2 프로토콜 채택 protocol 키워드를 사용하여 정의한다. protocol 프로토콜 이름 { 프로토콜 정의 } 구조체, 클래스, 열거형 등에서 프로토콜을 채택하려면 타입 이름 뒤에 콜론(:)을 붙여준 후 채택할 프로토콜 이름을 쉼표(,)로 구분하여 명시해준다. /* 코드 20-1. 타입의 프로토콜 채택 */ struct.. 2021. 10. 11. 이전 1 ··· 4 5 6 7 8 9 10 11 다음