주요한 차이는 무엇이고 언제 써야될까?
이는 Swift의 Dispatch 매커니즘과 관련이 있다. 보통 Dispatch라고 하면 Thread와 관련 있는 DispatchQueue를 떠올리게 되는데 이와는 다소 다른, 어떤 메서드를 호출할 것인지 결정하고 실행하는 매커니즘을 의미한다(Method Dispatc
대문자로 쓰지 않으면 음메~하고 우는 친구와 구분이 안 되는 COW는 Copy-on-Write라는 용어의 약자로서 프로그래밍에서의 복사 동작을 설명한다. 특히 Swift에서는 원시타입 구조체(Int, Double 등)와 컬렉션 구조체(Array, Set, Diction
일반적으로 객체는 클래스를 통해 추상화된 형태로서 이를 실제로 사용하기 위해는 메모리에 올라가는 인스턴스를 만들어줘야 한다. 생성자(initializer)는 이러한 객체의 인스턴스를 만들어주는 것이다.(단, Swift에서는 클래스 뿐만 아니라 struct에서도 생성자를
func라는 키워드로 시작하면서 우리에게 매우 친숙한 함수는 Class나 Struct, Enum과 같은 객체 내에서 선언될 경우 함수가 아닌, 메서드(Method)라는 이름으로 불리게 된다. 마치 정찬성이 UFC에서는 '코리안좀비'라고 주로 불리는 것과 같다고 할까?여
공부를 하다보면 자주 듣게 되는 MVC 패턴은 프로그램과 같은 것들에 대한 개발 중의 문제점들을 정리하고 이를 상황에 따라 간편하게 적용하여 쓸 수 있도록 특정한 규약을 통해 다듬은 형태를 의미하는 '디자인 패턴' 중 하나의 패턴이다.MVC 패턴은 하나의 프로젝트나 어
우리가 앱을 만들다보면 자주 접하게 되는 UIView를 자세히 뜯어다보면 UIResponder라는 객체를 상속받고 있다는 것을 알 수 있다.UIResponder라는 친구는 이름에서 알 수 있듯이 이벤트를 받게 되면 이를 무조건 처리해야하며, 자신이 처리할 수 없는 경우
KVO는 Key-value observing의 약자로서 이전에 얘기한 Delegate, Notification과 같이 변화에 대한 소통을 해주는 패턴 중 하나이다. KVO는 메서드나 액션을 통하지 않고 프로퍼티의 상태 변화에 반응하는 형태를 띄어, 보통은 객체와 객체
패러다임이란 한 시대의 사회 전체가 공유하는 이론이나 방법, 문제의식 등의 체계이다. 즉, 프로그래밍 패러다임은 프로그래밍이라는 기술을 이용하는 구성체가 가지고 있는 현 시대의 체계로 볼 수 있는데, 이 말인 즉슨 시대의 흐름에 따라 프로그래밍 패러다임도 변화하고 여러
swift에서는 다양한 라이브러리를 제공하는데 그 중에서도 대표적이라고 할 수 있는 프로토콜인 Equatable, Comparable, Hashable을 알아보고자 한다.Equatable 프로토콜은 그 이름과 같이 동일성을 비교하기 위한 프로토콜이다. 이를 채택할 경우
오늘은 iOS 프로젝트를 작업하다보면 꽤나 자주 접하게 되는 동기, 비동기에 대한 개념을 정리해보고자 한다.동기(Sync)동기는 단어 그대로 동시에 일어난다는 의미인데, 이는 작업이 전부 동시에 일어난다는 뜻이 아니라 "요청과 응답"이 동시에 일어난다는 뜻이다.즉, 카
작업을 하다보면 여러모로 많은 데이터를 처리하게 되는데 로컬에서뿐만 아니라 서버를 통해 이러한 데이터를 주고받는 경우가 잦다.보통 서버에서 데이터를 받아오면 json과 같은 파일의 형태가 많은데 해당 형식 그대로는 swift에서 사용할 수 없기에 적절한 데이터 형태로
Swift에 익숙해지다보면 자주 접하는 문법들이 많은데 그중에 오늘 얘기할 Extension이라는 문법이 있다. 이름 그대로 확장을 해주는 문법으로서, 오늘은 이에 대해 조금 더 알아보는 시간을 가지고자 한다.타입을 확장해주는 ExtensionExtension은 클래스
오늘은 swift를 사용하다보면 종종 접하게 되는 문법인 Generic에 대하여 알아보고자 한다.What is Generic?Generic은 그 뜻과 동일하게 범용적인 코드, 즉 타입에 의존적이지 않은 코드를 작성할 수 있게 해줌으로서 이를 사용할 경우 기존보다 조금
Swift를 쓰다보면 우리는 꽤 잦은 비율로 '?' 형태로 구현된 옵셔널을 마주하거나 사용하게 된다. 값이 있을 수도 없을 수도 있음을 표현해주는 이 문법은 자주 사용하지만 어떻게 구현되어 있는 지까지 학습하지는 않게 된다.그래서 오늘은 간단하게나마 옵셔널이 어떻게 구
코드를 작성할 때, 우리는 당연하게도 다양한 프로퍼티를 선언하고 할당하게 되는데 이 경우 어쩔 수 없이 타입 지정에 대한 고민을 할 수 밖에 없다. 물론 언어에 따라서 타입을 꼭 선언해주지 않아도 컴파일러가 알아서 체크를 해주기도 하지만 그렇지 않은 언어도 분명 존재한
우리는 프로젝트를 진행함에 있어 프로퍼티나 메서드 등의 여러 기능과 작업 요소들을 마주하게 되는데, 이때 메모리에 대한 신경을 쓸 수 밖에 없다.앱의 성능을 위해서는 필연적으로 메모리를 관리하고 유지해 줄 필요가 있으며, 이러한 것들이 제대로 이뤄지지 않는다면 사용되지
클로저란 무엇인가? 클로저는 이름을 명시하지 않은 익명 함수를 의미하며 일급 객체로서 인자로 보내거나 반환 값을 전달 및 저장하는 역할을 할 수도 있다.참조타입의 클로저이러한 클로저는 희한하게도 참조 타입으로 분류되는데 이에 대한 이유로는 "클로저가 값을 캡처하기 때문