[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

전체 글 491

[SwiftUI] ForEach, Identifiable

본 게시글은 애플의 공식문서(https://developer.apple.com/documentation/swiftui/foreach)를 참고하여 작성되었습니다. ForEach 확인된 데이터의 기본 collection으로부터 계산된 view들을 만들 수 있는 구조체입니다. View Builder에는 for문을 적용할 수 없습니다. 대신 ForEach문을 사용합니다. 배열을 이용해 새로운 Bag of Views를 만들 수 있습니다. 단, collection의 요소는 Identifiable protocol을 채택해야 합니다. 배열은 요소들이 계속해서 추가 및 삭제되면서 순서가 바뀔 수 있습니다. 따라서 각 요소들이 고유한 identifier가 있어야 해당 요소로 만들어진 View를 확인할 수 있습니다. 만약 ..

🍎 Apple/SwiftUI 2022.03.30

[SwiftUI] Opaque Type, ViewModifier, View Combiner

Opaque Type some View는 View의 한 종류인것만 결정되어있고, 자세히 어떤 View인지는 컴파일러가 직접 판단하는 View입니다. Some은 Opaque Type (불투명 타입)을 표현합니다. Opaque Type Some은 computed property 혹은 함수의 구체적인 return type을 숨길 수 있도록 해줍니다. 이를 통해 간결한 코드 작성이 가능해집니다. Opaque Type은 Reverse Generic Type이라고 불리기도 합니다. Generic은 함수가 타입 제약을 유지하면서 다양한 타입을 허용할 수 있도록 합니다. Opaque은 함수가 자유로운 타입을 리턴할 수 있도록 합니다. ViewModifier SwiftUI에 내장된 프로토콜로, 기존의 뷰 또는 다른 Vi..

🍎 Apple/SwiftUI 2022.03.30

[SOPT 30기 iOS YB] 지원 및 합격 후기

SOPT와의 첫 만남 SOPT를 처음 만난 건 컴퓨터공학부에 전과를 한지 약 1년이 되었을 쯤이었습니다. 어쩌다 인터넷에서 홍보를 보고 SOPT에서 주최하는 오프라인 행사에 외부인 자격으로 참석하게 되었습니다. 동아리가 코엑스 행사장을 빌려 행사를 하는 것도 놀라웠는데, 행사(앱잼)에서는 저와 비슷한 또래의 학생분들이 당장 서비스해도 손색없을 정도의 웹과 앱을 직접 만들어 발표하고 있더라구요. 이제 막 C언어를 배운 당시의 저에게 그 모습은 엄청난 충격이었습니다. 얼른 성장해서 이런 사람들과 함께하고 싶다는 생각이 들었어요. 첫 번째 지원과 서류 탈락 그로부터 1년 정도가 지났을 무렵, SOPT에 처음으로 지원했습니다. 당시는 제가 광주의 인공지능 사관학교라는 곳을 성적 우수 1등으로 수료하고 광주 시장..

[알고리즘 연습] 다리를 지나는 트럭 (프로그래머스 lv2, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 풀이 import Foundation func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int { var time = 0 var bridge = Array(repeating: 0, count: bridge_length) var trucks = tr..

[UIKit] View Drawing Cycle

참고 https://tech.gc.com/demystifying-ios-layout/ https://jeonyeohun.tistory.com/336 View의 Drawing Cycle이란 View가 로드되거나 변경이 생겼을 때 이를 화면에 적용시켜 그리는 과정을 뜻합니다. 이들은 즉각적으로 처리되지 않고, Main Run loop에 의존적인 형태를 가집니다. Main Run loop iOS의 이벤트는 각 스레드마다 존재하는 Run loop를 통해 처리됩니다. 발생하는 이벤트들이 모두 시스템상의 이벤트큐에 들어가고, Run loop가 돌아가면서 이들을 하나씩 가져와 처리하는 방식입니다. 그 중에서도 Main Run loop는 사용자의 입력 이벤트를 처리하고 적절한 응답을 트리거하는 역할을 수행합니다. Up..

🍎 Apple/UIKit 2022.03.16

[Swift] Actor

참고 및 출처 https://docs.swift.org/swift-book/LanguageGuide/Concurrency.html https://medium.com/hcleedev/swift-actor%EB%9E%80-f8f58c68dab9 https://zeddios.tistory.com/1290 Actor class Counter { var count: Int = 0 func increment() { self.count += 1 } } 이런 경우에 let counter = Counter() DispatchQueue.global().async { counter.increment() } // global counter.increment() // main 이런식으로 2개의 스레드에서 동시 접근을 하면 Xc..

[Swift][문서의역] Task

참고 및 출처 https://developer.apple.com/documentation/swift/task/ https://www.avanderlee.com/concurrency/tasks/ Task & TaskGroup Task 인스턴스를 생성할 때 해당 Task가 수행할 작업을 포함하는 클로저를 함께 제공하게 됩니다. Task는 생성 직후 실행을 시작할 수 있습니다. 명시적으로 시작하거나 예약하지 않아도 됩니다. Task를 만들면 해당 인스턴스를 사용하여 작업과 상호작용합니다. 예를 들어 Task의 작업이 완료될 때까지 기다리거나 취소할 수 있습니다. Task의 작업이 완료될 때까지 기다리거나 취소할 때까지 기다리지 않고 Task에 대한 참조를 버리는 것은 프로그래밍적 에러가 아닙니다. Task는..

[Swift][문서의역] Concurrency (async & await)

참고 및 출처 https://docs.swift.org/swift-book/LanguageGuide/Concurrency.html Concurrency Swift는 구조적 방식으로 비동기(asynchronous) 및 병렬(parallel) 코드 작성을 지원했습니다. 비동기 코드는 한번에 프로그램의 한 부분만 처리되지만 정지 및 재실행이 가능합니다. 네트워크에서 데이터를 가져오거나 파일을 읽어오는 등의 긴 기간의 연산을 하는 동안 UI를 갱신하는 등의 비교적 단기간의 연산을 수행할 수 있습니다. 병렬 코드는 여러개의 코드들을 동시에 실행할 수 있습니다. 예를 들어 4개의 코어를 가진 프로세서는 각 코어마다 하나의 코드를 배치하여 동시에 4개의 코드를 실행할 수 있는 것입니다. 병렬 및 비동기 코드는 유연하..

[Swift] Generic

Swift - Generic Generic을 사용하면 좀 더 유연하게 Funtion 및 Type을 작성할 수 있습니다. 중복을 피하고 그 의도를 추상적인 방식으로 표현하는 코드를 작성합니다. 아래와 같은 방식으로 사용합니다. func swapTwoValues(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA } 이름은 자유롭게 지정할 수 있습니다. 일반적으로는 T,U,V와 같은 단일 문자를 많이 사용합니다. Generic 뒤에 단일 클래스 혹은 프로토콜을 배치하여 Generic의 타입을 제한할 수도 있습니다. func someFunction(someT: T, someU: U) { // function body goes here }..

🍎 Apple/Swift 2022.03.07

[Swift] NotificationCenter

NotificationCenter NotificationCenter는 등록된 Observer에게 정보를 broadcast해주는 역할을 수행합니다. addObserver(_:selector:name:object:) 혹은 addObserver(forName:object:queue:using:) 메서드를 통해 알림(NSNotification 객체)을 받을 객체를 등록할 수 있습니다. 이 때 어떤 알림을 받아야하는지도 지정합니다. 따라서 하나의 객체에 이 메서드를 여러번 호출하는 것으로 여러 알림에 대한 Observer 역할을 하나의 객체가 동시에 수행하도록 할 수 있습니다. 실행중인 각 앱마다 default notification center가 존재하며, 필요할 경우 새로운 notification center..

🍎 Apple/Swift 2022.03.07