목록전체 글 (64)
GGURUPiOS
이번시간에는 Stack 자료구조 에 대해 알아보고 간단한 문제를 한번 풀어볼게요. 스택이란? 스택은 데이터를 특정순서대로 보관하는 자료구조 스택의 특징 Last-In, First-Out (LIFO) 구조를 가짐 예를들어) 앱을 사용할 때 네비게이션을 통해 A -> B -> C 식으로 화면에 들어갔을 때, 뒤로가기 버튼을 누르면 C화면이 사라지고 B화면이 다시 나온다. 이처럼 가장 마지막에 들어온 화면(데이터)가 가장 빨리 나가는 구조 스택의 구현 Swift에서 배열로 매우쉽게 구현가능함 (배열 메서드들로 해결가능) struct Stack { private var newArray: [Element] = [] mutating func push(_ element: Element) { newArray.appen..
안녕하세요. 이번시간에는 Swift의 접근제어(acces control)에 대해 알아보도록 하겠습니다. 접근 제어란? 특정 코드 접근을 제한하는 것 (소스파일, 모듈) 접근 레벨 종류 Open & Public: 정의한 모듈의 모든 소스파일과 정의한 모듈을 가져옴, 다른 모듈의 소스파일에서 엔티티를 사용가능 (일반적으로 프레임워크) !Open은 클래스와 클래스 멤버에만 적용되고,서브 클래스와 재정의 가능 Internal: 정의한 모듈의 모든 소스 파일 내에서 사용할 수 있지만, 모듈 외부에서는 불가능 (일반적으로 앱 또는 프레임워크 내부 구조체) File-private: 자체 정의한 소스 파일로 사용제한 세부 내용은 파일 전체에서 사용되고, 기능의 특정 부분의 구현 세부정보를 가리기 위해 사용 Privat..
안녕하세요 이번시간에는 Escaping closure (탈출 클로저)에 대해 알아보겠습니다. Escaping Closures? 함수에 인자로 클로저를 전달, 함수가 반환된 후 호출되는 클로저를 함수를 탈출하다 라고 말할 수 있음 아래와 같이 작성할 수 있습니다. var completionHandlers: [() -> Void] = [] func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Void) { completionHandlers.append(completionHandler) } Non-Escaping Closures 일반적인 클로저(escaping closure가 아닌 클로저)는 아래와 같은 특징을 가집니다 클로저는 전달된..
안녕하세요 이번시간에는 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..