Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

iOS Developer38

Project 0: 이거 했냥? _ 기획 -> 디자인 -> 개발 -> 출시까지 Prologue 애플 아카데미에 들어온 지 약 4개월.. 시간이 정말 빠르다. MC 1과 MC2, 그리고 나노챌린지 까지 끝이 났다. 나는 4개월 가량 어떤 성장을 이뤄냈는가? 이번 나노챌린지가 내 성장 상태를 돌아보는 계기가 되었다고 생각한다. 도메인, 테크, 디자인 사실 전 영역이 부족하다. 당연하다 나는 배우러 왔으니까. 다 잘하면 여기 안 있지 ㅎ.. 이번 나노챌린지의 목표는 'Fill the Gap' 즉 도메인, 디자인, 테크 중 부족한 영역, 갭차이가 큰 부분을 보완하는 것이다. 그래도 개발은 나름 혼자서 꾸준히 공부하고, 앞으로도 공부할 것이기 때문에 나는 '디자인'에 한번 집중해 보기로 했다. (물론 개발을 곁들인..) Why Design? MC1, MC2를 진행하면서 '나도 디자인 해보.. 2023. 6. 10.
closure, @escaping, completionHandler 콜백함수 클로저가 무엇인지? @escaping이 무엇인지? completionHandler/콜백 함수가 무엇인지? 정리하는 시간. 처음 배웠을 때 너무 복잡하고 어렵게 느껴져서 스스로도 정리해 보고 누군가에게 조금이라도 이해에 도움이 되기를 바라며.. 클로저(closure) close는 '무언가를 닫다' 라는 의미이다. 클로저도 그럼 뭘 닫는건가? 클로저는 쉽게 말하면 그냥 '함수'라고 볼 수 있다. input -> output, x -> y 마법상자로 비유를 하는 그 함수. { ... } 형태로 되어 있고 중괄호를 사용한다. (이를 코드 블록이라고 한다.) closure라는 이름에는 { ... } 코드블록이 외부에 있는 변수/상수를 닫아서 가져올 수 있다는 개념이 반영되어 있다. -> 클로저는 외부의 변수/상수.. 2023. 5. 29.
ARC, weak self, 캡쳐리스트 스위프에서 메모리 관리는 'ARC'를 통해서 이루어진다. ARC(Automatic Reference Counting) ARC는 객체에 대한 강한 참조(Strong Reference) 횟수를 추적하여 메모리에서 해당 객체를 해제하는 데 사용된다. 객체가 생성될 때마다 강한 참조 카운터가 1 증가하며, 해당 객체를 참조하는 다른 객체가 있을 때마다 카운터가 1씩 증가한다. 객체를 더 이상 참조하지 않을 때, 해당 객체에 대한 강한 참조 카운터는 1씩 감소한다. 강한 참조 카운터가 0이 되면 ARC는 해당 객체를 메모리에서 해제한다. *강한 참조로 인해 순환 참조(Strong Reference Cycle)가 발생할 수 있다. 순환 참조는 두 개 이상의 객체가 서로를 강한 참조하는 상황을 말한다. -> 이렇게 .. 2023. 5. 28.
DispatchQueue / GCD / multi threading / 스레드 / 비동기 코드를 짜다 보면 DispatchQueue를 되게 자주 만나고 사용한다. 그런데 이것이 무엇인지에 대한 개념과 이해가 부족했기 때문에 좀 정리하고 넘어가보고자 한다. 스레드(Thread) 스레드는 동시에 실행되는 작업의 단위이다. 각각의 스레드는 독립적으로 실행되고, '코드의 흐름을 병렬로 실행'할 수 있다. -> 만약 스레드가 1개만 있다면 코드의 순서대로 하나씩 위에서 아래로 쫙 실행해야 하는데, 이걸 스레드에 쫙 나눠줘서 동시에 병렬적으로 실행할 수 있다는 것이다. 메인 스레드(Main Thread) iOS 앱은 기본적으로는 메인 스레드(Main Thread)라는 단일 스레드 환경에서 동작한다. 메인 스레드의 역할은 UI 업데이트, 사용자 입력 처리, 애니메이션, 레이아웃 계산 등이 있다. 즉 사용.. 2023. 5. 26.
스위프트와 프로그래밍 패러다임 '스위프트의 언어적 특성' 안정성(Safe) 엄격한 문법을 통해 개발자의 실수 미연에 방지 옵셔널, guard, 에러처리, 타입통제 등을 통해 안전한 프로그래밍 가능 신속성(Fast) C언어 기반 프로그래밍 언어를 대체하려는 목적으로 만들어짐 C언어 수준과 성능과 속도가 동등한 수준이 되도록 꾸준히 발전되는 중 컴파일 속도도 빠름! (스위프는 컴파일 언어) 표현성(Expressive) 다양한 언어들을 참고해 편하고 읽기 쉬운 문법을 구현할 수 있음. '다중 패러다임 프로그래밍 언어' 스위프트는 명령형 프로그래밍과 객체지향 프로그래밍 패러다임을 기반으로 한 함수형 프로그래밍 패러다임 / 프로토콜 지향 프로그래밍 패러다임 지향. 객체지향 프로그래밍 패러다임 Object-Oriented Programming,.. 2023. 4. 8.
고차함수 ( Higher-order Function)_ map, filter, reduce 스위프트에서 함수는 일급시민(일급객체_First Class Citizen)이기 때문에 함수의 파라미터로 전달 될 수 있고, 함수의 결과값으로 return 할 수도 있다. 고차함수는 함수를 파라미터로 쓰거나, 함수의 결과로 함수를 리턴하는 함수이다. (input과 output이 다 함수일 수 있음_함수는 일급시민이니까) 대표적인 고차함수에는(다른 언어에도 대부분 정의 되어 있음) map, filter, reduce, forEach, compactMap, flatMap이 있는데 먼저 기본인 map, filter, reduce에 대해 알아보고자 한다. 배열, 딕셔너리, 셋과 같은 컬렉션 타입에서 많이 쓰고 대부분 배열에서 자주 쓰는 경우가 많았다. map 시간복잡도 O(n) Returns an array co.. 2023. 4. 4.