목록Swift (56)
GGURUPiOS
안녕하세요 최근 개인프로젝트를 진행하면서 적용한 Coordiantor 패턴에 대해 기술하려고 합니다. 일반적으로 구글링을 하다보면 childCoordinator를 부모 Coordinator가 소유하고, 필요에 따라 인스턴스를 찾아 해제하는 방식으로 이루어진 코드를 많이 만나볼 수 있는데요. 뭔가 복잡해보여서 조금 더 찾아보니 좀 더 메모리 관리에 쉽게 적용할 수 있는 방법이 있어 글을 적어봅니다 1. Child - Parent 관계의 Coordinator protocol Coordinator { func start() } class MainCoordinator: Coordinator { private var childCoordinators = [Coordinator]() private var naviga..
안녕하세요 이번시간에는 defer 문에 대해 알아보도록 하겠습니다. defer 문은 무엇일까요? defer 문은 defer문이 속해있는 범위 외부로 프로그램 제어권을 이전하기 직전에 코드를 실행 -> defer 블록 내부의 실행문은 함수가 종료되기 직전에 실행되도록 보장 (함수가 끝나기 전에 마지막으로 실행한다) 어떻게 동작? func ex() { defer { print("1") } print("2") } ex() // "2", "1" 순으로 출력 됨 2개 이상의 defer문이 있다면 어떻게 될까? -> defer는 역순으로 실행이 됩니다 (밑의 구문 먼저) func ex() { defer { print("1") } defer { print("2") } print("3") } ex() // "3", "..
안녕하세요. 이번시간에는 Swift의 접근제어(acces control)에 대해 알아보도록 하겠습니다. 접근 제어란? 특정 코드 접근을 제한하는 것 (소스파일, 모듈) 접근 레벨 종류 Open & Public: 정의한 모듈의 모든 소스파일과 정의한 모듈을 가져옴, 다른 모듈의 소스파일에서 엔티티를 사용가능 (일반적으로 프레임워크) !Open은 클래스와 클래스 멤버에만 적용되고,서브 클래스와 재정의 가능 Internal: 정의한 모듈의 모든 소스 파일 내에서 사용할 수 있지만, 모듈 외부에서는 불가능 (일반적으로 앱 또는 프레임워크 내부 구조체) File-private: 자체 정의한 소스 파일로 사용제한 세부 내용은 파일 전체에서 사용되고, 기능의 특정 부분의 구현 세부정보를 가리기 위해 사용 Privat..
안녕하세요 이번시간에는 Hashable에 대해 알아보도록 하겠습니다. Hashable?? Hashable은 프로토콜 입니다. 해시 값을 생성할 수 있는 타입을 정의하는 데 사용됩니다. Set, Dictionary와 같이 해시 기반의 자료 구조에서 요소들을 비교하고 식별하기 위해 활용됨 그렇다면 해시값(HashValue) 이라는것은 뭘까요? 주어진 데이터나 객체를 고정된 크기의 숫자로 매핑하는 것을 의미함 해시 함수를 통해 수행되며, 해시 함수는 입력으로 임의의 데이터를 받아서 고정된 길이의 비트열을 생성 -> 디지털 지문 처럼 동작함 Hashable은 Equatable을 상속 받은 프로토콜입니다. 따라서 Hashable을 준수하기 위해서는 Equatable 또한 준수해야 합니다 Hashable타입 준수 ..
안녕하세요. 이번시간에는 프로토콜 지향 프로그래밍 (Protocol Oriented Programming)과 객체지향 프로그래밍 (Object-Oriented Programming)에 대해 알아보고 둘이 어떻게 다른지 보겠습니다. Swift에서 프로토콜을 쓰는 이유는 무엇일까요? 그 이유를 이번시간에 파헤쳐 볼게용 그 전에 객체지향에 대해 무엇인지 간단히만 알아볼게요 객체 지향 프로그래밍(OOP)? 객체 지향 프로그래밍 이란 객체들의 '상호작용으로 서술하는 프로그래밍 기법' 입니다 (간단히 얘기해서 클래스의 인스턴스들끼리 프로퍼티, 메서드를 통해 상호작용) 객체지향 프로그래밍의 4가지 특성 추상화: 객체의 공통적인 속성과 기능을 추출하여 정의 (예를들어, 버스와 지하철 -> 탈것으로 정의, 추상화 가능)..
안녕하세요 이번시간엔 KVO, KVC에 대해 알아보고, 비교적 잘 정리된 글이 있어 많은부분을 가져왔습니다. https://anuragajwani.medium.com/introduction-to-kvo-and-kvc-in-swift-dceadfcf1b28 KVO, KVC? Key-Value Observing 과 Key-Value Coding은 런타임에 NSObject를 상속하는 클래스의 기본 프로퍼티를 찾아 상호 작용할 수 있도록 하는 메커니즘 (원래는 Objective-C) 컴파일 시 검사하는 점구문 대신 입력된 키를 통해 프로퍼티와 상호 작용할 수 있습니다. 아래의 예제를 봅시다. class Pokemon { var name: String init(name: String) { self.name = n..