전체 글

전체 글

    [1] App launch sequence - 앱은 처음에 어떻게 실행될까? - App Based

    [1] App launch sequence - 앱은 처음에 어떻게 실행될까? - App Based

    항상 앱을 실행하면 대체 어떻게 앱이 실행되는지 그 자체에 대한 궁금증이 있었다. 마치 C언어에서 메인 함수가 시작되면 프로그램이 컴파일 되어 돌아가는 것처럼, uikit의 project에서도 어디에서인가 프로그램이 시작되었으니 프로그램이 돌아갈 것이다. 또한, Storyboard는 빌드하면 우리가 알 필요도 없이 마법처럼 잘 돌아간다. 하지만, 어떻게 앱이 런칭되어서 돌아갈 수 있는지 그 과정을 공부해보자! Launching 과정을 이해하기 위해 알아야할 기본 개념 UIWindow Window는 view 계층의 최상위에 위치한다. 그렇다면 Window도 View일까? 맞다. Window도 UIView를 상속받은 View이다. 아이패드와 같은 환경이 아닌, 대부분의 아이폰에서는 하나의 main windo..

    🌈 220922 TIL

    오늘의 문제 문제: https://leetcode.com/problems/palindrome-linked-list/ 풀이: https://github.com/tottalE/swift-algorithm/blob/main/tottale/20220922-isPalindrome.swift 오늘의 아티클 Swift Language Guide - Inheritance https://bbiguduk.gitbook.io/swift/language-guide-1/inheritance Overriding Property Getters and Setters 상속된 프로퍼티가 소스에서 저장된 또는 계산된 프로피티로 구현되었는지 여부와 상관없이 모든 상속된 프로퍼티를 재정의 하기위해 사용자 지정 getter와 setter를 제..

    [swift] SOLID 원칙 예시를 써보며 이해해보기

    hands-on으로 직접 짜보며 SOLID 원칙을 이해해봅시다! 읽으시는 분들, 좀 더 잘 이해하고 싶으시다면 같이 코드를 작성해보며 이해하는 것을 추천합니다 :) SOLID란? 디자인 패턴의 일종으로 아래 다섯가지의 원칙을 지키는 것을 말합니다. 천천히 다섯가지 원칙을 쉬운 예시로 짚어보고자 합니다. Single Responsibility Open-Closed Liskov Substitution Interface Segregation Dependency Inversion 1. Single Responsibility 각각의 클래스는 하나의 책임만을 가져야 합니다. 클래스가 몇개의 책임을 맡고 있는지를 세어보고, 하나 이상의 책임을 가진 클래스들은 다른 클래스로 나누어 주는것이 좋습니다. // 이 구조체에..

    🌈 220920 TIL

    tags: TIL 오늘의 알고리즘 풀이영상 문제풀이 깃헙 문제: decodeString final Class Swift gives us a final keyword just for this purpose: when you declare a class as being final, no other class can inherit from it. This means they can’t override your methods in order to change your behavior – they need to use your class the way it was written. final 키워드 왜 사용하는걸까? final 선언시 직접 호출되어 속도가 빨라짐 오늘의 CS지식 0과 1 연산에서 컴퓨터의 ALU가 ..

    [swift] Delegate와 UML

    Delegate 프로토콜과 함께 어려운 개념이다. 이에 더해 UML로 이를 표현한다면 더욱 어렵게 느껴질 수 있다. 자세하게 Delegate에 대해 알아보자. 농부와 강아지의 관계를 프로토콜을 통해 어떻게 표현할 수 있을까? 농부가 펫을 소유함으로서 동물들이 해야할 역할을 대신해 준다고 볼 수 있다. (밥을 대신 먹여주기, 대신 씻겨주기, 대신 용변 치우기 등등) UML 알아보기 UML로 표현한 Delegation 우리는 위 UML과 같이 코드를 작성해줄 것이다. 아래 코드와 함께 천천히 이해해보자. 1. Dog class 정의하기 아래와 같이 Dog Class를 정의해줍니다 class Dog { var petOwning: PetOwning? func bark() { print("왈왈") } func e..

    [swift] 스택과 큐

    스택과 큐를 구현해보자. 스택 나중에 입력된 것이 먼저 출력되는 LIFP(Last In First Out) 데이터 구조를 나타낸다. public struct Stack { private var elements = [T]() public init() {} public mutating func pop() -> T? { return self.elements.popLast() } public mutating func push(_ element: T) { self.elements.append(element) } public func peek() -> T? { return self.elements.last } public var isEmpty: Bool { return self.elements.isEmpty } p..

    [swift] 링크드 리스트로 큐 구현하기

    우선 기본적인 것들을 linked list로 구현해보자. class Node { var value: String var next: Node? init(value: String, next: Node? = nil) { self.value = value self.next = next } } struct LinkedList { var head: Node? var tail: Node? init() {} var isEmpty: Bool { head == nil } mutating func push(_ value: String) { head = Node(value: value, next: head) if tail == nil { tail = head } } mutating func append(_ value: Str..