Programming
-
Swift - Generic Type ConstraintProgramming/Swift 2022. 1. 25. 17:34
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 Generic의 Type Constraint입니다. 지금까지 우리가 generic의 타입 파라미터를 사용할 때 모든 타입을 사용할 수 있었습니다. 하지만 어떤 기능만 가진 타입들만 오게하고싶거나 특정 타입으로 선언하지 않으면 에러가 발생하는 경우가 있습니다. 이렇게 타입 파라미터에 모든 타입이 아니라 몇몇 타입들만 오게 하는 기능이 바로 Type Constraint(타입 제약)입니다. Type Constraint Generic Type, Generic Funtuion, Associated Type에서 타입 파라미터를 사용할 때 타입 파라미터가 특정 class, protocol을 상속하게 하면 type constraint를 사용할 수 있습니다. C..
-
iOS - Storyboard에서 만든 VC를 코드로 접근하는 방법Programming/iOS 2022. 1. 25. 15:03
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 Storyboard에 만들어둔 ViewController를 코드를 통해서 접근하는 방법에 대해서 알아보도록 하겠습니다. 이전 포스팅에서 InterfaceBuilder를 통해 ViewController(VC)를 만들었지만 이 VC를 코드로 제어하는 방법에 대해서는 알아보지 않았습니다. Storyboard에 있는 VC를 코드와 연결하기 위해서는 선행 작업이 필요합니다. (프로젝트를 맨 처음 생성했을 때 만들어져 있는 VC는 이미 이 작업이 되어있습니다.) Scene과 코드 연결하기 프로젝트를 생성하면 ViewController라는 swift파일이 하나 만들어져 있습니다. 이 파일에는 UIViewController 클래스를 상속하는 ViewContro..
-
Swift - Generic Type 확장하기Programming/Swift 2022. 1. 24. 20:48
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 extension을 이용해서 Generic Type을 확장하는 방법입니다. Extension을 이용해서 Type을 확장하는 방법에 대해서는 이전에 공부했었습니다. 그럼 Generic Type도 extension으로 확장 가능하겠죠?? 어떻게 하는지 같이 공부해보도록 하겠습니다. Extending a Generic Type Generic Type을 공부할 때 만들어 보았던 Stack 구조체입니다. 이 구조체를 확장하고 싶어서 extension Stack {}을 했더니 Element를 찾을 수 없다고 합니다. Generic Type을 extension으로 확장할 때는 타입 파라미터를 정의하는 부분을 적으면 안 됩니다. 하지만 타입 파라미터를 적어주지..
-
Swift - Associated TypeProgramming/Swift 2022. 1. 19. 22:30
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 Generic과 관련된 Associated Type입니다. Generic을 이용하면 여러 Type에 호환이 가능한 Function, Custom Type을 만들 수 있었습니다. 이렇게 강력한 기능을 Protocol에서도 사용하고 싶을 때 Associated Type을 이용합니다. Associated Type Protocol에서도 타입 파라미터를 사용하면 안될까요?? 한번 사용해보도록 하겠습니다. 타입 파라미터를 사용했더니 protocol에서는 사용할 수 없다는 에러가 발생합니다. 그럼 어떻게 Type으로 사용될 placeholder를 지정할 수 있을까요?? associatedtype 키워드 뒤에 placeholder로 사용될 Type Name을 ..
-
Swift - Generic TypeProgramming/Swift 2022. 1. 18. 16:57
안녕하세요 BeePeach입니다 :) 이번 포스팅에서는 Generic Type에 대해서 공부를 해보려고 합니다. 이전 포스팅에서 Generic Function에 대해서까지만 설명하고 Generic Type에 대해서는 설명하지 않았습니다. Generic Type(제네릭 타입)이란 custom class, struct, enum이 Type에 상관없이 동작하는 Type을 의미합니다. 예를 들자면 지금까지 사용했던 Array, Dictionary를 생각해보겠습니다. Array, Dictionary 모두 struct입니다. Array에는 어떠한 Type이라도 모두 저장할 수 있었습니다. 모든 Type에 대해서 코드가 다 작성돼있지는 않았겠죠?? 심지어 잘 생각해보니 Array와 Dictionary의 Type을 지..
-
Swift - GenericProgramming/Swift 2022. 1. 17. 19:30
안녕하세요 BeePeach입니다 :) 오늘은 Generic(제네릭)에 대해서 공부해보려고 합니다. 제네릭이란 단어를 처음 들어봤을 수도 있지만 사실 우리는 계속해서 제네릭을 사용하고 있었습니다. Array와 Dictionary, Set을 생각해보면 Int를 넣는 배열을 만들기도 하고 String을 넣는 배열을 만들기도 했습니다. 어떠한 Type이 들어가도 다 생성할 수 있었죠. 이렇게 제네릭을 사용하면 Type에 관계없이 유연하고 재사용성이 높은 코드를 작성할 수 있습니다. Swift에서 제공하고 있는 많은것들도 제네릭으로 구현되어있습니다. 그럼 제네릭을 어떻게 사용하는지 같이 공부해보도록 해요! Generic 일반적으로 제네릭은 주로 Function, Type에서 사용됩니다. 두 단어가 결합해서 Gen..
-
Swift - Hashable ProtocolProgramming/Swift 2022. 1. 16. 19:38
안녕하세요 BeePeach입니다 :) 오늘은 기본적인 Protocol 중에 마지막 Hashable 프로토콜에 대해서 공부해보려고 합니다. 여기서 Hash란 아주 간단하게 설명하자면 어떠한 값을 특정 알고리즘을 통해서 Integer값으로 변환시키는 것을 의미합니다. 변환 알고리즘에는 종류가 아주 많습니다! (심심하면 한번 찾아보셔도 좋습니다.. SHA가 유명합니다.) 위 그림은 문자열을 특정 알고리즘함수를 통해서 00 ~ 15까지 변환하는 작업을 표현했습니다. 그리고 2개의 값이 다른데 같은 hash값으로 변환된 문제를 그림으로 표현한 것입니다. (이를 collision이라고 합니다.) 암호화에 사용하고 어쩌구 저쩌구 이런 건 다 제쳐두고 간단하게 어떤 값을 Interger값으로 변환시키는거구나~ 라고만 ..
-
Swift - Comparable ProtocolProgramming/Swift 2022. 1. 15. 23:42
안녕하세요 BeePeach입니다 :> 오늘 공부해볼 내용은 지난 포스팅에 이어서 기본적인 Protocol 중에 하나인 Comparable 프로토콜입니다. Equatable과 마찬가지로 우리가 기본적인 Type들의 대소비교를 할 수 있던 것은 기본적으로 제공해주는 Type들이 Comparable을 채용하고 있었기 때문입니다. 그럼 같이 한번 공부해보도록 해요! Adopting a Protocol Using a Synthesized Implementation Comparable은 Equtable과는 조금 다른 부분이 있습니다. 두 값이 같다 다르다와 어느값이 더 크다 작다는 다른 문제입니다. 무엇을 기준으로 더 크거나 작다는것일까요?? 예시를 들어보겠습니다. A라는 사람은 키가 180cm이고 몸무게가 85k..