-
[Swift] 타입으로서의 프로토콜 ( Protocol as Type )iOS/🟠 Swift 2021. 1. 19. 15:32
참고 자료: Protocols - swift.org 프로토콜은 First Class Citizen 이기 때문에, 하나의 독립적인 타입 ( a fully fledged types ) 으로 사용할 수 있습니다. 따라서 아래 3가지가 가능합니다. 1. function, method, initializer 의 parameter 와 return type으로 사용 가능 2. constant, variable, property 의 type 으로 사용 가능 3. array, dictionary 와 같은 컨테이너의 item의 type으로 사용 가능 그리고 타입이기 때문에 Upper Camel Case 를 사용합니다. (e.g. RandomNumberGenerator, FullyNamed ...) class Dice { ..
-
[Swift] 프로토콜 생성자 요구사항 (Initializer Requirements)iOS/🟠 Swift 2021. 1. 19. 14:36
참고 자료: Protocols - swift.org Syntax 프로토콜에서 Initializer 는 메서드 선언 방식과 마찬가지로 { } (curly brace) 없이 init(...) 과 같은 꼴로 선언해줍니다. protocol SomeProtocol { init(someParameter: Int) } Protocol 을 채택한 Class의 Initializer 구현 프로토콜을 채택한 타입은 Initializer를 designated initializer나 convenience initializer로 구현할 수 있습니다. 프로토콜은 class, struct, enum 타입만 채택할 수 있습니다. 두 경우 모두 `required` 키워드를 initializer 앞에 붙여주어야 합니다. SomeClass..
-
[Swift] @main 과 커스텀 엔트리 포인트iOS/🟠 Swift 2021. 1. 19. 13:54
1차 수정: 21.09.28 안녕하세요 🐶 이번 시간에는 @main 특성 (attribute) 에 대해서 알아보겠습니다. 그럼 시작해볼게요🔥 A more general purpose and lightweight mechanism for delegating a program’s entry point to a designated type. @main 의 기능 @main 은 스위프트 5.3버전에서 구현된 범용적인 새로운 엔트리 포인트 제공 기능입니다. 이전에는 앱 개발용 프로그램을 위해서는 @UIApplicationMain 이라는 어트리뷰트로 엔트리포인트를 지정했습니다. @main 이 범용적인 이유는 단일 파일 코드이던 프레임워크 프로젝이던 커스텀 라이브러리던 상관없이 동일하게 엔트리포인트를 제공해줄 수 있기..
-
Review of Work with View Controllers (1) - Food TrackeriOS/🤖 App 2021. 1. 19. 13:50
Understand the View Controller Lifecycle 하나의 씬보다 더 많은 씬을 가지고 있는 복잡한 앱에서, 우리는 화면이 이동함에 따라 view를 싣고 내리는 ( loading and unloading ) 작업을 다루어야 합니다. UIViewController 클래스는 뷰 계층을 관리하기 위한 메소드를 제공합니다. iOS는 하나의 View Controller의 상태가 바뀔 때 자동으로 적절한 메서드를 호출합니다. UIVIewController를 서브 클래싱 한 Custom class에서 해당 메서드를 오버 라이딩하여 상태 변화에 따라 원하는 동작을 직접 구현할 수 있습니다. iOS는 아래 UIViewController 메서드를 다음 시점에서 호출합니다 viewDidLoad() VC..
-
Review of Connect the UI to Code (2) - Food TrackeriOS/🤖 App 2021. 1. 19. 00:25
Define an Action to Perform iOS 앱은 이벤트 기반 프로그래밍 ( event-driven programming ) 기반입니다. 이것은 앱의 실행 흐름이 이벤트에 의해 정해진다는 의미입니다. 이벤트에는 시스템이 발생시키는 이벤트(system events)와 앱 사용자가 발생시키는 action 이 있습니다. 사용자가 UI를 통해 실행시킨 Action이 앱 내 이벤트를 발생시킵니다. " The user performs actions in the interface that trigger events in the app " 즉, 앱의 코드 조각이 실행되는 시기를 사용자가 제어할 수 있습니다. action 즉 action method는 앱에서 발생하는 이벤트와 연결되어 있는 코드 조각입니다...
-
Mutating Method - MethodsiOS/🟠 Swift 2021. 1. 18. 23:28
이 키워드가 필요한 이유 struct와 enum 은 값 타입 입니다. 기본적으로 값 타입의 속성은 인스턴스 메서드 내부에서 변경할 수 없습니다. 속성은 변경할 수 없기 때문에, implicit property 인 `self` 도 변경할 수 없습니다. 추가적으로 에러메시지 내용이 왜 make `x` mutable 이 아닌 make `self` mutable 인지 생각해보면, 메서드 바디에서 x 나 y는 implicitly 하게 표현된 것이고, 사실은 self.x , self.y이기 때문입니다. 변경할 수 있게 하는 방법 func 앞에 `mutating` 키워드를 붙여줍니다. 붙여주면 인스턴스 속성을 수정할 수 있게 됩니다. 메서드가 실행 종료되면 변경된 값을 인스턴스 속성에 덮어 씌우는 방식입니다. 또한 ..
-
[Swift] 프로토콜 메서드 요구사항 (Method Requirements)iOS/🟠 Swift 2021. 1. 18. 23:03
참고 자료: Protocols - swift.org 속성과 마찬가지로 method 도 `static` 키워드를 통해 type method를 구현할 수 있습니다. 일반적인 instance method 와 type method처럼 정의하면 되지만, 프로토콜은 구현은 하지 않는 요구사항 이기 때문에 { } (curly brace) 에 해당하는 바디 부분은 없습니다. Syntax protocol SomeProtocol { // Type method // with no-input, no-return static func someTypeMethod() } protocol RandomNumberGenerator { // Instance Method // with no-input, Double type return f..
-
Review of Connect the UI to Code (1) - Food TrackeriOS/🤖 App 2021. 1. 18. 21:58
Connect the UI to Source Code 스토리 보드의 요소들 ( Views ) 은 소스 코드와 연결되어 있습니다. 스토리보드에서 하나의 씬 (scene)은 콘텐츠로 이루어진 하나의 화면을 나타내며 보통 하나의 View Controller와 연결되어 있습니다. View controller 에서 앱의 동작을 구현합니다. View controller는 하나의 컨텐트 뷰 (content view)와 그 밑 계층의 서브 뷰( subviews )를 관리합니다. 이것은 Content View Controllers의 경우입니다. Container View Controllers는 여러 개의 자식 View Controller를 관리합니다. 관련 글: View Controller의 역할 View control..
-
Review of Build a Basic UI - Food TrackeriOS/🤖 App 2021. 1. 18. 17:01
사소하더라도 새로 알게 된 점을 적고, 복습 차원에서 중요한 점을 되짚어 보고 싶었습니다. 특히 용어들과 그 용어들에 대한 개념을 놓치지 않고 싶습니다. 공식 문서에서 사용하는 용어를 아는 것은 소통에 있어서 아주아주 critical 한 factor라고 생각하기 때문입니다. Project navigator Navigator selector bar 중에 가장 왼쪽에 위치한 navigator로 프로젝트를 구성하는 파일 전체를 볼 수 있습니다. The App Delegate Source File #앱 상태변화 처리 #앱 레벨 이벤트 처리 #앱 생명주기 관리 `system`이라는 용어가 등장합니다. 앱을 구동하는 OS 라고 생각하고 글을 작성하였습니다. AppDelegate.swift 파일은 두 가지 주요 기능..