안녕하세요. 모바일 개발자라면, 모바일 개발에 관심이 많다면 늘 생각하고 고민하게 되는 디자인 패턴에 대한 이야기를 하는 시간을 가지겠습니다. 늘 공부하는 MVP, MVVM에 대해, Rx를 왜 사용하는지, Model이란 도대체 무슨 역할을 수행하는지에 대해 제 생각을 쭉 써보는 시간입니다. 제가 늘 공부하면서 머리속에 정리되어 있는 내용을 작성하는 포스트이기에 틀린 부분이 있으니 참고하셔서 읽어주세요. 부족하거나 틀린부분을 댓글로 남겨주시면 더욱 발전하는 제가 될 수 있습니다. 많이 많이 부탁드리겠습니다. Presenter Presenter는 뷰와 비지니스 모델의 중간다리 역할을 수행합니다. 뷰의 어떠한 이벤트가 발생한다고 한다면 이 이벤트에 대한 비지니스 로직에 대한 결정은 오직 Presenter만이 ..
안녕하세요. 오늘은 Swift의 클래스 상속에서 가장 중요한 부분인 재정의와 생성자에 대해 정리하는 시간을 갖도록 하겠습니다. 재정의 (override) 자식클래스는 부모클래스의 특성을 자신만의 기능으로 재정의가 가능합니다. 특히 자식 클래스는 부모클래스의 프로퍼티를 재정의 할 수 있습니다. (여기서 프로퍼티를 재정의한다는 것은 프로퍼티 접근자, 설정자, 감시자를 재정의 하는 것입니다.) 부모클래스에서 읽기 전용 프로퍼티라도 읽고 쓰기가 가능한 프로퍼티로 재정의해줄 수 있습니다. 하지만 읽기 쓰기가 모두 가능한 프로퍼티를 읽기 전용으로 재정의 할 수는 없습니다. 또한 프로퍼티 감사자도 재정의가 가능한데 부모클래스의 저장 프로퍼티는 물론 연산 프로퍼티에도 감시자를 정의해줄 수 있습니다. 다만 읽기 전용 연..
안녕하세요. 오늘은 Swift의 서브스크립트에 대해 알아보는 시간을 갖겠습니다. 서브스크립트란? 별도의 설정자나 접근자 없이 인덱스를 통해 값을 가져오기 설정할 수 있습니다. Array에서 [index]로 접근하거나 Dictionary의 [key]로 접근하여 값을 설정하고 가져오는 문법이 바로 서브스크립트입니다. 서브스크립트 사용 문법 subscript(index: Int) -> String{ set(value){ // 생략 가능하며 newValue로 전달인자를 사용할 수 있습니다. print(index, value) } get{ return "hello world" } } 간단하죠? 만약 설정자가 필요없고 값을 가져오는 기능만 하고 싶다면 다음과 같이 선언이 가능합니다. subscript(index: ..
안녕하세요. 오늘은 Swift의 접근지정자에 대해 알아보겠습니다. 객체지향의 은닉화를 위해 접근지정자를 사용하는데요. Swift는 총 5개의 접근지정자를 가지고 있습니다. 모듈과 소스파일 Swift는 모듈과 소스파일을 기반으로 접근지정자가 설계되었습니다. 모듈은 하나의 코드의 묶음입니다. 하나의 프레임워크 하나의 라이브러리 하나의 애플리케이션이 모듈의 단위입니다. 소스파일은 .swift파일 하나의 단위입니다. Swift는 기존의 언어와 달리 하나의 .swift파일에 여러 타입을 정의할 수 있습니다. 접근지정자 Swift의 접근지정자는 총 5개로 open, public, internal, fileprivate, private로 이루어져 있습니다. public, open public은 어디서든 사용될 수 있..
안녕하세요. 오늘은 Swift의 가장 강력한 기능 중 하나이자 Rx프로그래밍을 하면 자주 사용하게 되는 클로저에 대해 알아보겠습니다. 일급 객체 일급 객체라는 말은 함수형 프로그래밍을 하다보면 자주 만나게 되는 말입니다. 아래 3가지 조건을 충족하면 1급 객체라고 할 수 있습니다. 변수나 데이터로 할당 할 수 있어야 한다. 객체의 인자로 넘길 수 있어야 한다. 객체의 반환 값으로 리턴 할 수 있어야 한다. Swift에서 함수는 일급 객체입니다. 다른 말로는 Swift에서는 함수를 인자로, 반환 값으로, 변수나 상수에 할당 할 수 있습니다. 클로저 Swift의 클로저는 함수를 블럭의 모양으로 표현하는 것입니다. Swift의 클로저는 함수의 매개변수와 반환타입을 생략할 수 있는 축약 문법을 지원하며 클로저의..
안녕하세요. 오늘은 Swift의 프로퍼티에 대해 알아보겠습니다. 먼저 이 글은 제가 경험하면서 해석한 정의이기에 오류가 있을 수 있습니다. (오류사항은 하단에 댓글로 남겨주시면 바로 수정하겠습니다!) 객체의 속성과 동작 객체 지향 프로그래밍은 객체들의 상호작용으로 하나의 커다란 문제를 해결합니다. 객체는 속성과 동작을 가지는데 속성은 그 객체가 가지고 있는 특성이며 동작은 객체가 속성을 가지도 어떠한 행동을 정의한 것이며 여러 객체의 동작의 상호작용을 통해 문제를 해결합니다. 그렇기에 객체를 생성하기 위해 속성과 동작은 필수적입니다. 오늘 말할 프로퍼티는 이 객체가 가지고 있는 특성을 Swift로 정의하는 것을 의미합니다. 프로퍼티 Swift의 프로퍼티는 3가지로 나눌 수 있습니다. 저장 프로퍼티 : 인..
안녕하세요. 오늘은 클래스와 구조체에 대해 알아보는 시간을 가지겠습니다. 클래스와 구조체 Swift는 데이터를 구조화 하거나 객체를 생성하기 위한 방법으로 클래스와 구조체라는 두가지 방법을 가지고 있습니다. 클래스와 구조체의 공통점 & 차이점 공통점 값을 저장하기 위해 프로퍼티를 정의할 수 있습니다. 기능 수행을 위해 메서드를 정의할 수 있습니다. 서브스크립트 문법을 사용할 수 있습니다. 생성자와 익스텐션을 사용할 수 있습니다. 프로토콜을 준수할 수 있습니다. 차이점 구조체는 상속할 수 없습니다. 타입캐스팅은 클래스의 인스턴스만 가능하다. 가장 큰 클래스와 구조체의 차이점은 클래스는 참조타입이며 구조체는 값타입이라는 것 입니다. 구조체는 값타입이기에 소멸자도 ARC도 적용되지 않습니다. 클래스는 참조타입..
안녕하세요. 오늘은 Swift의 강력한 기능 중 하나인 옵셔널에 대해 알아보겠습니다. nil이란? Swift에는 nil이라는 키워드가 있습니다. 기존 언어의 null과 같은 의미인 데이터 없음을 나타내는 기능입니다. 함수의 동작 중 진행 불가를 나타낼 때, 상태 없음, 데이터 없음을 나타낼 때 사용하며 만약 nil인 데이터를 작동시키면 ERROR를 나타내며 프로그램이 작동 중단을 하게 됩니다. (Java - Null Point Exeption) 이러한 문제로 인해 Safe(안전성)을 중시하는 Swift는 데이터 타입에 nil을 넣을 수 없습니다. 옵셔널이란? 옵셔널은 해당 변수 또는 함수의 반환값으로 nil(데이터 없음)이 나타날 수 있음을 명시적으로 알려줍니다. 그렇기에 옵셔널 데이터 타입으로 명시한 ..
안녕하세요. 오늘은 Swift를 통해 흐름을 제어할 수 있는 반복문과 조건문에 대해 알아봅시다. 스위프트의 흐름 제어문은 소괄호를 생략할 수 있지만 중괄호는 생략할 수 없습니다. if 문 Swift의 if 문의 조건의 값이 꼭 Bool 타입이여야 합니다. switch 문 break 키워드는 선택사항이며 case가 연속적으로 실행하도록 만드려면 fallthrough라는 키워드를 사용하면 됩니다. case에 들어갈 비교 값은 입력 값과 데이터 타입이 같아야 합니다. 비교될 값이 명확히 한정적인 값이 아닐 때에는 default를 꼭 사용하여야 합니다. 또한 where 절을 사용하여 조건을 확장할 수 있습니다. 쉼표를 사용하여 여러 값과 함께 비교할 수 있습니다. let data = 10 switch data{..
안녕하세요. 오늘은 Swift의 함수에 대해 알아보겠습니다. Swift의 특별한 점을 중점적으로 다루는 글이니 함수에 대해 알고 보시면 더욱 좋을 것 같습니다. 매개변수 이름 Swift의 함수에서 매개변수를 받는다면 매개변수 이름을 설정할 수 있습니다. name : type 와 같이 설정하여 매개변수를 받을 수 있습니다. 또한 전달인자 레이블을 설정할 수 있는데 이를 통해 밖에 보이는 매개변수 이름과 함수안에서 사용하는 매개변수 이름을 다르게 설정할 수 있습니다. name label : type 와 같이 설정할 수 있으며 전달인자 레이블은 안에서 사용하는 매개변수 이름, 매개변수 이름은 밖에 보이는 매개변수 이름 으로 정의 할 수 있습니다. 매개변수 이름을 사용하고 싶지 않다면 와일드카드 식별자를 통해 ..
- Total
- Today
- Yesterday