Programming
-
Swift - Equatable ProtocolProgramming/Swift 2022. 1. 14. 18:17
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 기초적인 Protocol 중 하나인 Equatable 프로토콜입니다. 우리가 비교 연산자를 통해서 Int, String 등 기본적인 Type을 서로 비교할 수 있던 것은 Swift Standard library에서 제공하는 대부분의 Type들은 기본적으로 Equatable 프로토콜을 채용하고 있기 때문입니다. 그럼 우리가 직접 만든 Custom Type들은 선언할 때 Equtable을 추가해주지 않는데 비교가 가능할까요?? 우리가 주로 만드는 Type은 Class, Struct, Enum이 있을 텐데 어떻게 되는지 하나하나 알아보도록 하겠습니다. Adopting a Protocol Using a Synthesized Implementation A..
-
Swift - Protocol ExtensionProgramming/Swift 2022. 1. 12. 18:50
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 Protocol Extension입니다. Protocol도 Type이기 때문에 extension을 이용해서 확장시킬 수 있습니다. Extension을 활용하면 아래의 기능을 추가시킬 수 있습니다. Protocol Default Implenentation(기본구현) 추가 Constraints (제약) 추가 그럼 하나하나씩 공부해볼까요?? Extension 우리가 이전에 배웠던 extension의 가장 기본적인 사용법은 Type에 없던 멤버들을 추가시키는 것이었습니다. Extension을 이용하면 protocol에 computed property, method, subscript를 추가시킬 수 있습니다. 그럼 여기서도 protocol에 없던 요구사항..
-
ERROR - Can't find keyplane that supports type 4 for keyboardProgramming/Errors 2022. 1. 10. 18:26
Project Can't find keyplane that supports type 4 for keyboard iPhone-PortraitChoco-NumberPad; using 27059_PortraitChoco_iPhone-Simple-Pad_Default 으음...? 방금 전까지만 해도 잘 되던 프로젝트에서 TextField에 입력을 하려고 하니 이러한 로그가 뜨면서 앱이 멈춰버렸다. 프로젝트가 이 keyboard를 지원하지 않는다 라는 내용인데 짐작 가는것은 평소에는 블루투스 키보드를 사용하고 밖에서는 노트북 내장 키보드를 사용한다는 점. 그리고 최근에 키맵핑을 위해 카라비너를 다운로드하여서 노트북 인식 키보드가 변경됐다는 점이다. 해결 방법은 Simulator -> I/O -> Keyboard ..
-
Swift - Protocol Optional RequirementProgramming/Swift 2022. 1. 4. 19:55
안녕하세요! BeePeach입니다 :) 오늘 다뤄볼 내용은 Protocol Optional Requirement(선택적 요구사항)입니다. 먼저 헷갈릴 수 있는 단어를 확실하게 하고 가겠습니다. Optional requirement에서의 Optional은 우리가 이전에 공부한 Optional Type을 의미하는 게 아닙니다. 여기서 Optional은 단어 그대로 선택적이라는 형용사적 의미이고 우리가 이전에 Int?과 같이 사용하던 Optional은 형용사적 의미가 아니라 Optional Type을 지칭하는 명사적 의미입니다. 지금까지 공부한 protocol은 requirement(요구사항)를 선언하고 Type이 protocol을 채용한다면 반드시 요구사항을 구현해야 했습니다. 선택적 요구사항이란 Type이..
-
Swift - Protocol CompositionProgramming/Swift 2022. 1. 3. 11:20
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 protocol composition입니다. Composition의 의미가 애매할 수 있는데 합성, 조합을 의미한다고 생각하면 됩니다. 이미 존재하는 Protocol을 조합해서 여러 개의 protocol을 동시에 만족시키는 Type을 만들어냅니다. 주의할 점은 새로운 Type을 만든 것은 아니고 기존에 존재하는 것을 조합했을 뿐입니다. Protocol Composition 헷갈릴 수 있는 부분을 먼저 집고 넘어가는게 좋을 거 같네요. 이전에 protocol을 채용할때 TypeName 옆에 : (colon)을 적고 , (comma)로 구분해서 여러 개의 protocol을 채용할 수 있다고 했습니다. 그럼 이게 Compostion(조합)아니야?? 여..
-
Swift - Protocol InheritanceProgramming/Swift 2022. 1. 2. 12:24
안녕하세요 BeePeach입니다 :> 오늘은 Protocol의 Inheritance(상속)에 대해서 공부를 해보려고 합니다. Class의 특징 중에 하나는 상속이 가능하다는 점이었습니다. Protocol도 class와 비슷하게 상속이 가능합니다. 그럼 Protocol에서 상속을 어떻게 사용하는지 같이 공부해보도록 하겠습니다. Protcol Inheritance Protocol의 상속은 class의 상속과 문법이 똑같습니다. 다만 차이점은 protocol 상속은 여러 개의 protocol 상속이 가능합니다. 여러 개를 상속할 때는 , (comma)로 구분해주면 됩니다. 어려울 부분이 없으므로 바로 예제를 보겠습니다. Readable과 Writable 프로토콜을 선언하고 이를 동시에 상속하는 TextFile..
-
Swift - Protocol as TypeProgramming/Swift 2021. 12. 29. 23:02
안녕하세요 BeePeach입니다 :0 이번 포스팅에서 공부해볼 주제는 Protocol Type입니다. Protocol에서 기능들을 직접 구현을 할 수는 없지만 프로토콜을 Type으로 사용할 수 있습니다. 이를 다른 말로 existential type이라고 합니다. 이 말은 '프로토콜을 (conform)따르는Type이 존재한다.' 라는 말에서 유래했습니다. Protocol도 Type이기 때문에 protocol의 이름을 지어줄 때 UpperCamelCase 컨벤션을 따른 것입니다. Protocol Type 위에서 설명했듯이 protocol도 First Class Citizen입니다. (First Class Citizen에 대해서 모르신다면 여기를 참고해주세요.) First Class Citizen이기 때문에..
-
Swift - Protocol Initializer , SubscriptProgramming/Swift 2021. 12. 28. 18:28
안녕하세요 BeePeach입니다 :) 이번 포스팅에서는 지난번 포스팅에 이어 Protocol에서 Initializer와 Subscript를 정의하는 방법에 대해서 공부해보도록 하겠습니다. Initializer Init을 정의하는 방법도 마찬가지로 body를 제외하고 헤더만 적어주면 됩니다. 어려울 게 없으니 바로 예시를 보겠습니다. Figure라는 프로토콜에 name 프로퍼티와 init(name:)을 정의했습니다. 그리고 Triangle이라는 struct를 정의했는데요 init(name:)을 요구하고 있으니 init(name:)을 정의하고 내부 구현은 우리가 원하는 대로 할 수 있습니다. 이 코드에서 짚고 넘어갈 부분은 protocol에서 name 프로퍼티와 init(name:)을 요구하고 있고 Tria..