정보 (49) 썸네일형 리스트형 performAction<T: Animal>, animal: Animal 차이? https://explorer89.tistory.com/222 상속(Inheritance)과 프로토콜(Protocol)의 차이점은 무엇인가요?상속(Inheritance)과 프로토콜(Protocol)은 Swift에서 객체지향 프로그래밍(OOP) 및 프로토콜 지향 프로그래밍(POP)을 구현하기 위한 두 가지 주요 개념입니다. 이 둘은 비슷한 목적을 가지고 있지만 사용explorer89.tistory.com 1. 제네릭을 사용하는 경우func performAction(on animal: T) { animal.makeSound() animal.eat()} 장점: 제네릭을 사용하면 함수가 구체적인 타입(T)을 알고 작업할 수 있습니다.예를 들어, T가 특정 타입(예: Dog, Cat)이라면 컴파일러가 .. SOLID 원칙이란? SOLID 원칙은 객체지향 설계에서 유지보수성과 확장성을 높이기 위해 사용되는 5가지 핵심 원칙입니다. 이를 스위프트로 예를 들어 설명하며, 각 원칙의 위반 전과 후를 비교해서 어떤 문제가 있었는지, 이를 어떻게 수정했는지 그리고 그 결과는 무엇인지 살펴보겠습니다. 1. 단일 책임 원칙 (Single Responsibility Principle, SRP)클래스는 하나의 책임만 가져야 합니다.즉, 클래스는 하나의 기능(역할)만을 담당하고, 그 책임이 변경될 이유가 하나여야 합니다.위반 전아래 코드는 UserManager 클래스가 사용자 데이터 관리와 로깅까지 동시에 담당하고 있습니다.class UserManager { func saveUser() { print("Saving user to.. 디자인 패턴 - 싱글톤 패턴 https://explorer89.tistory.com/20 1. 싱글톤 패턴이란? 싱글톤 패턴은 오직 하나의 객체(인스턴스)만 생성되도록 보장하는 디자인 패턴입니다.이 패턴을 사용하면 같은 객체에 여러 곳에서 접근할 수 있습니다. 2. 왜 싱글톤 패턴을 사용할까? 앱이나 프로그램에서 공유된 데이터나 공통 기능이 필요할 때 사용합니다.여러 인스턴스가 생기면 데이터가 일관되지 않을 수 있기에, 하나의 인스턴스만 유지하게 해줍니다. 3. 싱글톤 패턴의 예시: TV 리모컨TV 리모컨을 생각해보면, 리모컨으로 채널을 변경 또는 볼륨을 조절할 수 있습니다. 리모컨이 여러 개 있다면? TV 채널이나 볼륨 조절이 엉망이 될 수 있습니다. 따라서 하나의 리모컨 (= 싱글톤 객체) 만 사용하여 TV를 제어합니다. .. Hashable과 Equatable은 밀접한 관계 https://explorer89.tistory.com/274 해시란? Hash, HashableHash란?데이터를 관리, 유지하는 자료구조로 데이터들을 해시 함수를 통해 key로 분류하고, 그 key에 따라 value를 저장하는 형태를 뜻합니다.즉, "Hash"는 데이터를 고유한 숫자 값으로 변환하는 과정explorer89.tistory.com 1. Equatable이란?Equatable은 "두 값이 같은지 비교할 수 있는 능력"을 제공하는 프로토콜입니다.이 프로토콜을 채택한 타입은 "== 연산자"를 구현해야 합니다.struct Item: Equatable { let id: Int let name: String}// `Equatable`을 채택하면 Swift가 자동으로 `==`를 구현해줌le.. 해시란? Hash, Hashable Hash란?데이터를 관리, 유지하는 자료구조로 데이터들을 해시 함수를 통해 key로 분류하고, 그 key에 따라 value를 저장하는 형태를 뜻합니다.즉, "Hash"는 데이터를 고유한 숫자 값으로 변환하는 과정 또는 그 결과를 의미합니다. 이 때 숫자 값은 "해시 값(hash value)"라고 합니다. "Apple" 이라는 과일의 숫자 값으로 변환한다면?let apple: String = "사과"print(apple.hashValue)// -7518292052611397302 위의 에서 나온 "-7518292052611397302" 값이 바로 해시 값이라고 합니다. (이 때, 해시 값은 매번 달라집니다.) 그렇다면 왜 해시 값이 필요할까?컴퓨터는 문자열이나 복잡한 데이터를 숫자로 변환하면 작업을 더 빠.. Static Dispatch vs Dynamic Dispatch Static Dispatch와 Dynamic Dispatch는 메서드 호출 방식에 대한 개념으로, 프로그램이 메서드 호출 시점을 언제 결정하느냐에 따라 구분됩니다. 두 가지는 각각 컴파일 시간과 런타임에 메서드 호출을 결정하는 방식을 설명하며, 이로 인해 성능과 동작 방식이 다릅니다. Static Dispatch (정적 디스패치)컴파일 시간에 어떤 메서드를 호출할지 결정합니다.호출 대상이 고정적이며, 런타임에 동적으로 결정되지 않습니다.함수의 실제 구현은 호출 시점에서 이미 컴파일러가 알고 있습니다Static Dispatch는 값 타입(구조체, 열거형)의 메서드 호출과 컴파일 시점에 메서드 호출이 확정되는 경우에 사용됩니다. 1. 구조체(struct)와 열거형(enum)의 메서드Swift에서 구조체와 열.. 클래스와 구조체가 섞여 있을 때... https://explorer89.tistory.com/30 구조체와 클래스의 차이값 타입과 참조 타입 값 타입과 참조 타입의 가장 큰 차이점은 값 타입 경우, 전달될 값이 복사 참조 타입 경우, 전달될 값이 복사되는게 아니라, 참조(주소)가 전달 값 타입과 참조 타입 차이 //explorer89.tistory.com 클래스와 구조체가 섞여 있을 때, 내부에 무엇이 포함되어 있는지에 따라 메모리 관리 및 동작 방식이 달라질 수 있습니다. 1. 클래스 내부에 구조체가 있는 경우클래스 내부에 구조체가 포함되면, 해당 구조체는 값 타입(value type)으로 동작합니다.즉, 클래스의 객체를 복사하더라도 구조체는 독립적으로 복사됩니다.struct Point { var x: Int var y: In.. DispatchQueue.main.async와 DispatchQueue.main.sync의 차이점은 무엇인가요? 1. .async와 .sync의 차이는 무엇인가?1.1 DispatchQueue.main.async:비동기적으로 작업을 메인 스레드에 추가합니다.현재 실행 중인 코드가 즉시 반환되고, 메인 스레드의 RunLoop에 따라 작업이 실행됩니다.Deadlock(교착상태)이 발생하지 않으며, UI 작업에 안전하게 사용할 수 있습니다. 1.2 DispatchQueue.main.sync:동기적으로 작업을 메인 스레드에 추가합니다.호출한 스레드는 작업이 완료될 때까지 대기합니다.만약 메인 스레드에서 다시 DispatchQueue.main.sync를 호출하면 Deadlock(교착 상태)이 발생합니다.🟥 .async와 .sync의 차이: 대기 방식.async는 "작업을 추가하고 바로 반환".async는 작업을 대기열에.. 이전 1 2 3 4 ··· 7 다음 목록 더보기