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

iOS Developer/Swift7

Swift - Unit Test/ 유닛테스트 요즘 여기저기서 많이 들리는 TDD를 위해서 필요한 Unit Test에 대해 알아보자. TDD란? Test-Driven Development. 소프트웨어 개발 방법론 중 하나. 테스트 코드를 먼저 작성하고 그에 맞게 실제 코드를 구현하는 방식. TDD는 아래와 같은 순서로 진행된다. 1. 실패하는 테스트 코드 작성(요구사항 충족하지 않는 테스트 케이스 작성) 2. 테스트를 통과하는 최소한의 코드 작성 3. 테스트 통과 확인 4. 리팩토링(작성한 코드 개선, 중복 제거 및 품질 향상) 위 과정을 반복하면서 요구사항을 충족하는 코드를 점점 디벨롭하는 것. Unit Test는 이런 개발 사이클에서 핵심적인 역할을 담당한다. Unit Test Unit Test는 작은 단위의 코드, 즉 함수나 모듈 등의 개별적인.. 2023. 7. 1.
의존성 주입 (DI, Dependency Injection) 한참 전에 의존성 주입에 대해 공부하며 포스팅을 했었는데.. 오늘 다시 공부하면서 훨씬 많이 이해한 거 같아서 다시 정리하기 위함. 의존성 주입. DI라고 하는데.. 말이 참 어렵다. 의존성? (Dependency) 난 카페인에 너무 의존적이야. 할 때 그 의존이다. 카페인에 의존적인 사람은 카페인이 없으면 살지 못하겠지?(비유다.) 코드로 본다면 class 커피 { var bestMenu: String = "아아" } class 카페인중독자 { var myCoffee: 커피 = 커피() func say() { print(myCoffee.bestMenu) } } 여기서 카페인중독자 클래스는 커피 클래스에 의존하고 있다. why? 커피 클래스가 없다면 var 커피를 초기화 할 수 없으니까! 이런식으로 코드.. 2023. 6. 18.
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.
스위프트와 프로그래밍 패러다임 '스위프트의 언어적 특성' 안정성(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.