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

분류 전체보기 495

[iOS Design Pattern] Coordinator

Coordinator Pattern Coordinator 패턴은 ViewController가 보유하던 책임 중 Navigation과 관련된 부분을 다른 인스턴스에서 책임지도록 하는 패턴입니다. 기존의 ViewController에서 직접적으로 화면전환을 시행하는 방식은 다음에 띄워질 다른 ViewController에 대해 기존 ViewController가 알고 있어야 하는 구조입니다. 이는 ViewController 인스턴스 간에 심한 커플링을 발생시킵니다. 이를 해결한 것이 Coordinator 패턴입니다. 모든 ViewController는 Coordinator 인스턴스만 보유할뿐, 다른 ViewController 인스턴스를 직접적으로 보유하지 않습니다. 그저 Coordinator에게 요청할 뿐입니다. ..

🍎 Apple/Patterns 2022.04.12

[iOS Architecture] VIPER

안녕하세요 이누입니다. 오늘은 많이 들어만보고 뭔지는 아직도 모르는 VIPER 패턴에 대해 학습해봤습니다. VIPER 패턴? 먼저 VIPER 패턴입니다. VIPER는 View, Interactor, Presenter, Entity, Router의 약자입니다. 이름대로 이 5개의 요소로 UI 구성 패턴을 정의합니다. 각 요소들은 위와 같이 상호작용하며 자신의 역할을 수행합니다. 각 요소의 역할은 다음과 같습니다. View ViewController를 포함해 화면에 보여지는 모든 것들이 여기에 포함됩니다. Presenter에 대한 참조를 보유합니다. Presenter에서 호출하여 자신을 변경할 수 있는 메서드를 내부에 보유합니다. (다른 방식으로 Presenter의 이벤트를 확인해 직접적으로 처리하도록 할 ..

🍎 Apple/Patterns 2022.04.11

[Swift] Method Swizzling

Method Swizzling? 개념 Method Swizzling은 원래의 메서드를 runtime에 원하는 메서드로 변경해 사용할 수 있도록 하는 기법입니다. UIViewController의 viewWillAppear같은 메서드를 원하는 메서드로 변경해 여러 ViewController에 한번에 작업을 적용하는 방식으로도 사용이 가능합니다. 예를 들어 앱 분석기능을 적용하는 경우 여러 ViewController에 같은 동작을 수행해야하는 경우가 있습니다. 이럴 때 하나씩 적용하는 것보단, Method Swizzling으로 한번에 처리하는 것이 효율적인 것이지요. 사용예시 import UIKit extension UIViewController { static func methodSwizzling() { l..

🍎 Apple/Swift 2022.04.10

[Swift] Localizing (NSLocalizedString)

안녕하세요 이누입니다! Localizing에 대해 알고는 있었지만, 직접 적용시켜본적은 없었습니다. 다국어 지원은 글로벌 앱 서비스 제작에 상당히 중요한 부분이라 한번쯤은 적용해볼 필요가 있다고 느꼈습니다. 그래서 동아리에서 하고있는 인스타그램 클론코딩 과제에 Localizing을 적용해봤습니다. 하나씩 살펴보시죠! cf. 코드로 Localizing을 적용하는 것을 기준으로 설명했습니다. 사용과정 String 파일 생성 먼저 Strings 파일을 생성해야합니다. 이 때 파일명은 반드시 Localizable이어야 합니다. 그렇지 않으면 프로젝트 상에서 인식할 수 없어요! 경로는 상관없습니다. 저는 이렇게 생성해줬습니다. 언어 추가 이제 오른쪽 Localizable 파일을 선택하고 Inspector 영역에서..

🍎 Apple/Swift 2022.04.10

[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..

반응형