본문 바로가기

전체 글56

[TIL] 20230116: Refactoring with delegation 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 델리게이션을 사용한 리팩토링 Refactoring with delegation 기존에 싱글톤을 사용해서 만든 프로젝트를 델리게이션을 사용해서 리팩토링 해보았다. class FruitStore { var fruitStock = [Fruit.딸기: 10, .바나나: 10, .파인애플: 10, .키위: 10, .망고: 10] static let shared = FruitStore() private init() {} func useFruit(juice: Juice) -> [Fruit: Int]? { ... } class FruitStore { var fruitStock = [Fruit.딸기: 10, .바나나: 10, .파인애플: 1.. 2023. 1. 18.
[TIL] 20230113: Protocol2 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 프로토콜 Protocol 메서드 요건 Method Requirements 프로토콜은 특정한 인스턴스 메서드와 타입 메서드를 적절한 타입을 통해서 구현하도록 요구할 수 있다. 이 메서드는 일반적인 인스턴스와 타입메서드와 정확히 같은 방식으로 프로토콜의 정의의 일부분으로 쓰여진다. 그런데 중괄호와 메서드 바디가 빠진..ㅎ 일반적인 메서드에 적용되는 규칙과 같은 규칙에 따라서 가변 매개변수를 사용할 수 있다. 하지만 디폴트 값은 프로토콜의 정의 내에서 메서드 매개변수로 특정될 수 없다. 타입 프로퍼티의 요건과 함께, 프로토콜 안에서 정의 되었을 때 static 키워드로 타입 메서드 요건을 항상 앞에 달아줘야한다. 클래스에 의해서 .. 2023. 1. 14.
[TIL] 20230112: Closures 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 클로저 Closures 클로저는 코드 안에서 전달되고 사용될 수 있는 함수의 독립적인 블록이다. 스위프트에서의 클로저는 C나 Objective-C의 블록과 비슷하고 다른 프로그래밍 언어의 람다와 비슷하다. 클로저는 정의되는 맥락으로부터 어떠한 변수나 상수로든지 캡쳐하고 참조를 저장할 수 있다. 클로저는 다음 세가지 중 하나의 형태를 띄고 있다: 전역함수: 이름이 있고 어떠한 값도 캡쳐하지 않는 함수 중첩함수: 이름이 있고 감싸고 있는 함수로부터 값을 캡쳐할 수 있는 함수 클로저 표현: 주변의 맥락으로부터 값을 캡쳐할 수 있는 간단한 문법으로 쓰인 이름이 없는 클로저 swift의 클로저 표현은 간단하고 깔끔한 문법을 장려하는 .. 2023. 1. 13.
[TIL] 20230110: Protocol1 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 프로토콜 Protocol 프로토콜은 특정 일이나 함수에 걸맞는 메서드, 프로퍼티, 그리고 다른 요건들의 청사진을 정의한다. 프로토콜은 요건들의 구현을 제공하기 위해서 클래스, 구조체, 열거형에서 사용될 수 있다. 프로토콜의 요건들을 충족하는 어떤 타입이든지 프로토콜을 따른다고 말할 수 있다. 필수적으로 구현해야하는 타입들을 따르는 요건들을 명시하는 것 뿐만 아니라, 그러한 요건들을 구현하기 위해서 혹은 추가적인 함수를 구현하기 위해서 프로토콜을 확장할 수도 있다. 프로토콜 문법 Protocol Syntax 프로토콜은 클래스, 구조체, 열거형과 비슷한 방식으로 정의할 수 있다: protocol SomeProtocol { // .. 2023. 1. 11.
[TIL] 20230109: Singleton 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 싱글톤 Singleton 장단점 장점 단점 ▪️ 하나의 인스턴스만을 사용해 메모리 낭비를 줄일 수 있다. ▪️ 싱글톤 인스턴스는 전역 인스턴스이기 때문에 다른 클래스와의 자원 공유가 쉽고 접근이 쉽다. ▪️ Swift에서는 static let을 통해 싱글톤을 구현해 thread-safe하다. ▪️ 서브클래스를 정의할 수 없다. ▪️ 싱글톤 인스턴스가 너무 많은 일을 하거나 너무 많은 데이터를 공유할 경우 결합도가 높아진다. ▪️ 많은 테스트 프레임워크들이 모의 객체들을 생성할 때 상속에 의존하기 때문에 유닛 테스트하기가 어렵다 ▪️ 클래스의 작업을 처리하는 역할 뿐 아니라 자신의 인스턴스에 대한 접근을 관리하는 역할에 대해서.. 2023. 1. 10.
[토요스터디A반] 20230107: Property Observer, MVC, Notification Center 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 프로퍼티 옵저버 Property Observer 프로퍼티 옵저머는 프로퍼티의 값 변화를 관측하고 반응한다. 프로퍼티 옵저버는 프로퍼티의 값이 설정될 때마다 호출이되는데, 프로퍼티의 현재 값과 새 값이 같을 때도 호출이 된다. 다음과 같은 곳에서 프로퍼티 옵저버를 사용할 수 있다: 정의한 저장 프로퍼티 상속받은 저장 프로퍼티 상속 받은 연산 프로퍼티 상속받은 프로퍼티에서는, 서브클래스에서 그 프로퍼티를 오버라이딩함으로써 프로퍼티 옵저버를 더할 수 있다. 그리고 정의한 연산 프로퍼티에서는 옵저버를 만드는 대신에 프로퍼티의 setter를 사용할 수 있다. 다음의 옵저버를 둘 중 하나 혹은 둘 다 구현할 수 있다: willSet: .. 2023. 1. 7.