swift75 프로토콜 컴포지션이 클래스 상속 구조보다 유용한 경우를 설명하기 좋은 예제 존 호프만의 Protocol-Oriented Programming with Swift(스위프트 프로토콜지향 프로그래밍) 4장 읽으며 메모 (요약글 아님) 객체지향에서 프로토콜 컴포지션이 클래스 상속 구조보다 유용한 케이스를 설명하기 적합한 예시가 책에 나와있어서 나중에 써먹으려고 메모. 되게 많을 것 같지만 생각보다 확 와닿고 쉬운 예제가 금방 떠오르지가 않는다. 그럴 때 이 예시를 들면 좋을 것 같다. 클래스 - 한 번에 하나의 부모만 상속이 가능함. (실제 세계에서, 나를 낳아준 부모가 중복이 될 수 없는 것처럼) 프로토콜 컴포지션 - 여러 개의 작은 프로토콜들을 채용하여 내가 필요한 것만 선별적으로 취할 수 있다. 따라서 비대한 슈퍼클래스의 생성 / 서브클래스가 쓸데없는 기능까지 다 안고 있을 필요.. 2019. 12. 30. Swift의 Array가 멀티쓰레드에서 안전하지 않은데 어떻게 하면 될까요? (Stack Overflow) 원문 Adding items to Swift array across multiple threads causing issues (because arrays aren't thread safe) - how do I get around that? 뜻을 이해하기 쉽도록 의역/추가설명을 붙인 부분들이 있습니다. Question Swift 멀티 쓰레드 환경에서 Array에 아이템을 추가하려고 했더니 이슈가 발생했습니다(Array가 쓰레드에 안전하지 않음). 어떻게 하면 될까요? 저는 블럭을 저장하는 Array를 만들고, 요청을 받았을 때 그 Array 안의 블럭을 전부 실행시켜주고 싶었습니다. 그래서 다음과 유사한 코드를 작성했습니다. class MyArrayBlockClass { private var blocksA.. 2019. 12. 30. 스위프트에서의 '타입' 존 호프만의 Protocol-Oriented Programming with Swift(스위프트 프로토콜지향 프로그래밍) 2장 메모글 (요약 아님) 스위프트에서의 타입의 분류 1) 이름 있는 타입 - 타입을 정의할 때 이름을 부여한 타입 - 클래스, 구조체, ENUM, 프로토콜 등 - Primitive type 대부분(Number Bool 문자열 등) - 따라서 이런 원시타입에도 확장을 사용할 수 있다는 장점 2) 복합 타입(compound type) - 이름을 부여하지 않은 타입 - 함수 타입(클로저, 함수, 메서드 등)과 튜플 등 - typealias 로 별명을 붙일 수 있음 스위프트에서의 타입의 범주 - 참조타입: 인스턴스 전달 시 원본의 참조를 전달. 클래스 등 - 값 타입: 인스턴스 전달 시 원본.. 2019. 12. 26. Opaque Types Swift 5.1 에서 추가된 Opaque Types 의 Apple Docs 번역글입니다. 제 블로그에서 Swift 번역글이 스테디하게 인기가 좋길래 새로운 피처가 추가된 기념으로 한번 해보았습니다 :) 제 번역 포스트는 원문 그대로의 직역이 아닌 이해를 돕기 위한 의역, 부연설명이 되어 있으니 참고해주세요. 이번 문서는 최대한 이해에 도움이 되게끔 문장을 몇 번이나 고쳐썼습니다. 오역 발견 시 꼭 제보해주시면 감사하겠습니다. * 이 문서는 Swift 에서의 Protocol, Generic 에 대한 이해가 선행되어야 이해하실 수 있습니다. Opaque Types Opaque 리턴 타입(Opaque return type)을 가지는 함수/메소드는 자신의 리턴 타입에 대한 정보를 드러내지 않습니다. 함수의 리.. 2019. 12. 22. 객체지향 프로그래밍과 프로토콜지향 프로그래밍 (feat. Swift) 존 호프만의 Protocol-Oriented Programming with Swift(스위프트 프로토콜지향 프로그래밍) 1장에 대한 글입니다. 책의 내용을 기본으로 하고 있지만, 개인적으로 많은 고민을 하면서 쓴 글이기 때문에 그런 부분도 반영되어 있습니다. 참고해주세요. Polymorphosm, OOP, POP 객체지향 프로그래밍(OOP)과 프로토콜지향 프로그래밍(POP)을 살펴보기 전에 먼저 짚고 넘어가야 할 핵심개념이 있다. 그것은 바로 Polymorphism(다형성) Polymorphism이란, 간단히 말하면, 같은 인터페이스로 여러 타입과 상호작용할 수 있는 개념이다. (ex) 콜라(캔)와 오렌지주스(플라스틱병) 객체가 각각 있다고 할 때 - Polymorphism 적용 X: if 콜라캔 { 캔.. 2019. 11. 6. Collection Types Apple 제공 Swift 프로그래밍 가이드(4.2)의 Collection Types 부분을 공부하며 정리한 글입니다. 개인적인 생각, 이해를 돕기 위한 예제도 조금 들어가있습니다. 들어가며Swift 에서는 값을 저장하기 위한 세 가지 Primary Collection type 을 제공합니다. Array, Set, Dictionary 입니다.Array : 넣은 순서대로 저장되는 콜렉션Set : 값이 중복되지 않는 순서없는 콜렉션Dictionary : key-value 관계를 가지는 순서없는 콜렉션 이 콜렉션 타입들 역시 다른 상수 변수와 마찬가지로 type 체크에 엄격합니다. 즉 한번 저장할 값의 type 을 정하면 다른 type 의 값은 저장할 수 없습니다. (따라서 String, Int 같은 각기 다.. 2018. 9. 5. 이전 1 2 3 4 5 ··· 13 다음