👨🏻‍💻iOS 공부

    [Swift] Access Control

    Access Control 접근 제어(Access Control)는 다른 소스 파일(source file)이나 모듈(module)에서 오는 코드와 우리의 코드 간에 접근을 제한을 할 수 있는 기능이다. 이러한 특성을 통해 코드의 상세 구현부를 숨길 수 있고, 허용된 기능만 사용하는 인터페이스를 제공할 수 있다. 각 타입 ( class, struct, enum) 혹은 타입 내부의 프로퍼티, 메서드, 이니셜라이저, 서브스크립트 등에 특정한 접근 수준(access level)을 할당할 수 있다. 프로토콜은 전역 상수, 변수, 함수처럼 특정 맥락(context)에 의해 제한될 수 있다. 다양한 접근 수준을 제공함과 더불어, Swift는 매번 접근 수준을 명시해주는 수고로움을 덜어주기 위해 기본적으로 접근 수준을..

    [Swift] Generics

    Generics Generic 코드는 유연하고, 재사용가능한 함수와 타입을 사용할 수 있게 하여, 어느 타입이건 작업을 수행할 수 있고, 작업자가 정의한 대로 수행할 수 있다. 이를 통해 중복을 방지하고, 의도를 명확하고 추상적으로 표현하는 코드를 작성할 수 있다. Generics는 swift가 지원하는 가장 파워풀한 기능 중 하나이다. 실제로 사용되고 있는지는 보지 못했겠지만, 자주 사용하고 있는 Array나 Dictionary 타입들은 모두 generic collection이다. Array은 Int형으로 만들 수도 있고, String 타입으로 만들 수도 있고 더 나아가 다른 타입으로도 구성할 수 있다. 유사하게 딕셔너리의 경우도 타입을 지정하고 값을 저장할 수 있으며, 그 타입에는 제한이 없다. 즉,..

    [Swift] Struct VS Class

    Struct Class type Value type (= call-by-value) Reference type (= call-by-reference) 메모리 할당 공간 Stack Heap 상속 X O deinit X O Struct enum과 같이 값 타입이다. (값의 복사가 일어난다) struct는 stack 메모리 공간에 할당된다 stack 메모리 공간은 "컴파일" 시점에 결정된다. Thread-safe 상속 불가 기본적으로는 reference count로 메모리를 관리하지 않으나, 참조를 포함하는 경우에는 reference count를 사용한다 Class 참조 타입이다. class는 heap 메모리 공간에 할당된다. heap 메모리 공간은 "런타임" 시점에 결정된다. Thread-unsafe ARC..

    [Swift] Dictionary 파헤치기

    https://developer.apple.com/documentation/swift/dictionary Apple Developer Documentation developer.apple.com Dictionary란? Key-value 쌍의 원소로 이루어진 collection을 말한다 Declaration @frozen struct Dictionary where Key : Hashble 이전에 Optional의 구조를 살펴볼 때도 @frozen 키워드를 본 적이 있다. Future versions of the library can’t change the declaration by adding, removing, or reordering an enumeration’s cases or a structure’..

    [Swift] split과 components (feat. 문자열 처리)

    문자열을 다룰 때 주로 쓰는 메서드들을 살펴보자. Split(separator : ) separator를 인자로 하여 받은 값을 기준으로 대상 문자열을 나눈다. 예를 들어서 "this is a remote controller"를 " "(공백)으로 나눈다고 할 경우 ["this" "is" "a" "remote" "controller"] 를 결과로 얻게 된다. var s = "this is a remote controller" var splited = s.split(separator: " ") print(splited) // ["this" "is" "a" "remote" "controller"] 이렇게 공백을 빼고 반환해준다는게 장점이다. 하지만! [Substring]으로 반환되어 바로 사용하기에는 껄끄러운..

    [Swift] OOP의 SOLID 원칙

    객체 지향 프로그래밍이란? 먼저 작은 문제들을 해결할 수 있는 객체들을 만들고, 이 객체들을 조합하여 큰 문제를 해결하는 방식이다. 좋은 객체 지향 설계를 하게 되면 코드의 재사용, 유지보수의 용이성 등의 장점으로 가져갈 수 있고 개발 기간/비용들을 감축할 수 있다! 항상 코드는 유연하고 확장할 수 있고 유지보수가 용이하고 재사용할 수 있어야 한다. 이러한 OOP 방식을 잘 준수하기 위해 만들어진 것이 SOLID원칙이다. OOP의 SOLID 1. 단일 책임의 원칙 (SRP: Single Responsibility Principle) 하나의 객체는 하나의 책임을 가져야 한다. 즉 하나의 class가 여러 기능을 담당하면 안된다는 것이다. class Search { func searchResult() -> ..