전체 글 45

iOS Application Life Cycle

이번 포스팅에서는 iOS의 Application Life Cycle에 대해서 공부한 부분을 정리해 보도록 하겠습니다. 😄 애플 공식문서의 'Managing Your App's Life Cycle' 이라는 Article을 주로 살펴 볼 예정입니다. 우선! iOS 13 이후 버전 부터는 Scene이라는 개념이 만들어 지고, UISceneDelegate 개체들을 Scene-based 앱의 life-cycle 이벤트에 대응하기 위해 사용하고 있습니다. Scene은 하나의 프로세스에 여러개가 존재할 수 있고, Scene 하나하나마다 Life Cycle을 따로 가지고 있기 때문에, 하나의 앱에서 여러개의 Scene이 각각 다른 상태에서 동작이 가능합니다. 예를들어, 어떤 Scene 하나는 Foreground상태에서..

iOS 2021.01.18

App Delegate / Scene Delegate Method

iOS 프로젝트를 제일 처음 만들면 AppDelegate.swift, SceneDelegate.swift파일 이렇게 두가지가 생성됩니다. 여기 내부에 있는 메서드에 대해서 한번 알아보겠습니다! App Delegate func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } 우선 didFinishLaunchingWithOptions 메서드입니다. App Delegate의 역할은 ..

iOS 2021.01.15

Dispatch(2) : Sync / Async / main / global

이번 포스팅에서는 Sync, Async, main, global에 대해서 알아보도록 하겠습니다! [Instance Method] Sync Sync란 Work Item을 Queue에다가 실행을 위해 제출하고, 해당 block이 실행을 마치면, 리턴해주는 메서드 입니다. dispatchQueue.sync { } dispatchQueue.sync(execute: ) 이런 방식으로 만들어질 수 있습니다! 1 ~ 5 그리고 6 ~ 10 까지 출력을 하는 두가지의 for 구문을 작성하여 sync block에 넣어서 코드를 작성해 보겠습니다. dispatchQueue.sync { for i in 1...5 { print("\(i)") } } dispatchQueue.sync { for i in 6...10 { pri..

Swift 2021.01.13

Dispatch(1) : What is Dispatch and Dispatch Queue?

[Framework] Dispatch? Dispatch란 멀티코어 하드웨어 환경에서 시스템이 관리하는 Dispatch Queues에 작업을 제출하여 코드를 동시에 실행시킬 수 있는 방법입니다. Grand Central Dispatch(GCD)라고도 알려져 있는 Dispatch는 macOS, iOS, watchOS, tvOS의 멀티코어 하드웨어에서 동시성 코드 실행을 도와주는 체계적이고 포괄적인 개선 기능을 제공하는 언어 기능, 런타임 라이브러리, 시스템 향상을 포함합니다. BSD 서브시스템, Core Foundation, Cocoa APIs 는 모두 향상된 기능을 활용하여 시스템과 애플리케이션을 보다 빠르고 효율적으로, 그리고 향상된 응답성으로 실행할 수 있도록 확장되었습니다. 컴퓨팅 코어의 개수가 서로..

Swift 2021.01.13

iOS UITableView

UITableView? UITableView는 우선 UIScrollView를 부모 클래스로 가진다. 'Table views on iOS display a single column of vertically scrolling content, divided into rows. ' iOS의 TableView는 행으로 분할된 수직으로 스크롤을 할 수 있는 단일 열을 보여주는 View입니다. 이 각각의 행은 하나의 Content를 포함할 수 있다. 이 각각의 행은 UITableViewCell입니다. UITableViewCell? 'The visual representation of a single row in a table view.' UITableViewCell은 Table View의 단일행의 시각적인 표현입니다..

iOS 2020.12.23

Parse JSON with Swift

JSON? JSON File Format 또는 JSON이라고 불리는 JSON은 JavaScript Object Notation의 약자입니다. JSON의 정의를 보면 'JSON is an open standard file format, and data interchange format, that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and array data types (or any other serializable value).' 즉, 속성 - 값의 쌍과 배열 데이터 타입으로 구성된 데이터 개체를 저장 또는 전송하는 표준 파일 Format이라고 할 수 있습니다. JSON은..

Swift 2020.12.23

ScrollView AutoLayout(with Code)

UIScrollView 의 AutoLayout 설정에 대해서 알아보겠습니다. ScrollView 내부의 View들을 정의할 MyScrollView Class와 MyScrollView를 정의할 ViewController 이렇게 두개의 Class에서 진행해 보겠습니다. 우선 ScrollView! ScrollView에는 하나의 Vertical StackView와 색이 다른 3개의 UIView를 넣으려고 합니다. private let verticalStackView: UIStackView = { let stackView = UIStackView() stackView.translatesAutoresizingMaskIntoConstraints = false stackView.axis = .vertical stack..

iOS 2020.12.22

Unit Test (XCTest)

Unit Test XCode에서는 Unit Test 또는 단위 테스트라고 하는 기능을 제공하고 있습니다. XCode에서 Unit Test를 하여 테스팅을 자동화하여 테스팅에 사용되는 시간을 절약할 수 있으며, 버그를 사전에 예방할 수 있고, 이러한 테스팅 과정을 통해서 코드를 보다 더 최적화 시킬 수 있게 도와줍니다. XCTest Unit Test에서 주로 사용하는 Framework중 하나인 XCTest를 살펴보겠습니다. XCTest란 XCode 프로젝트에서 Unit Test를 만들거나 실행하고, Performance Tests, UI Tests를 하는데에 사용하는 프레임워크입니다. Swift Package를 활용하여 간단한 Unit Test를 해보겠습니다. 우선 Swift Package를 생성하면 So..

iOS 2020.12.16

Linked List (with Swift) - Removing values

이번에는 Linked List에서의 값을 삭제하는 방법에 대해서 알아보겠습니다. pop : List의 앞에 있는 값을 삭제 removeLast : List의 제일 마지막에 있는 값을 삭제 remove(at: ) : List의 어딘가에 있는 값을 삭제 우선 pop부터 살펴보겠습니다. 제일 앞의 요소를 pop한다면 head가 현재 head의 nextNode로 바뀌게 될 것입니다. 그리고 pop을 했을 시 비어버리는 경우도 생각해야 합니다. 마지막으로 pop을 해준 요소를 리턴해 줍니다. 코드로 나타내 보겠습니다. @discardableResult public mutating func pop() -> T? { defer { //2 head = head?.nextNode if isEmpty { tail = ni..

Data Structure 2020.12.11

Linked List (with Swift) - Node and Adding Values to List

Linked List란 선형의 단방향으로 이루어진 값들의 집합이라 할 수 있습니다. Linked List는 Swift의 Array와 같은 연속적인 저장에 다양한 이론적인 이점을 가지고 있습니다. (상수 시간에 삽입과 삭제가 이루어질 수 있음) 위의 그림과 같이 Linked List는 Node들이 연결된 형태로 존재합니다. Node? Node는 값을 가질 수 있고, 또한 다음 Node와의 Reference를 가집니다. 만약 Reference의 값이 nil 이라면 이 Node가 마지막이라는 의미가 됩니다. Node 타입을 코드로 작성해 보면 public class JoonsNode { public var value: T public var nextNode: JoonsNode? public init(value..

Data Structure 2020.12.10