분류 전체보기
-
CodableSwift 2021. 12. 28. 16:49
안녕하세요. 저번 시간에는 NSCoding을 알아봤으니 오늘은 Codable에 대해서 알아보겠습니다. https://developer.apple.com/documentation/swift/codable Apple Developer Documentation developer.apple.com Codable은 공식문서에서 보이듯이 Decodable과 Encodable을 합친 프로토콜인데요. 워낙 두 프로토콜을 같이 쓰는 경우가 많다보니 아예 공식적으로 Codable을 만든 것 같아요. 설명을 보면 자기 자신으로 변환되거나 외부 표현으로 변환될 수 있는 타입이라고 하네요. 저희는 이 표현이 인코딩과 디코딩을 의미하는 것을 NSCoding을 학습하면서 배웠습니다. 그럼 Decodable과 Encodable을 알..
-
NSCoderSwift 2021. 12. 27. 15:28
안녕하세요. 오늘은 NSCoder에 대해서 알아보도록 하겠습니다. 아마 Custom View를 만들어보신 분들이라면 한 번쯤은 보신 친구일텐데요. CustomView에 생성자를 만들게 되면 이런 에러가 발생하시는 것을 보셨을 거에요. 아니 view만드는데 frame만 있으면 되는거 아닌가? 왜 이상한 실패가능한 생성자를 만들라는거지?? 라고 생각하고 그냥 Fix버튼 눌러서 fatalError를 작성하고는 했었는데요. 과연 저 함수가 왜 필요한지 도대체 NSCoder가 무엇인지 이번 기회에 알아보도록 하겠습니다. NSCoder https://developer.apple.com/documentation/foundation/nscoder Apple Developer Documentation developer...
-
escaping closure(탈출 클로저)Swift 2021. 12. 23. 14:58
안녕하세요. 오늘은 escaping closure에 대해서 알아보도록 하겠습니다. 그러기 위해선 먼저 closure에 대해서 알아야겠죠? closure는 특정 기능들을 하는 코드를 하나의 블럭이라고 보시면 될 것 같습니다. 저희는 이미 그런 기능을 하는 친구를 알고 있죠? 바로 함수입니다. 사실 함수도 closure의 일종입니다. Swift에서 closure는 1급 객체인데요. 이게 무슨 소리냐 다른 변수에 할당할 수 있고, 인자로 사용될 수 있고, 반환값으로 사용될 수 있다는 것을 의미합니다. // 변수에 할당 let plus: (Int, Int) -> Int = { a, b in return a + b } // 매개변수로 사용 func calculateTwoAndThree(formula: (Int, ..
-
setNeedsDisplay & setNeedsLayoutiOS 2021. 12. 23. 13:05
안녕하세요. 오늘은 비슷해보이는 두 친구들이죠. setNeedsDisplay와 setNeedsLayout에 대해서 알아보도록 하겠습니다. 두 메소드 이름만 봐서는 무엇인가를 세팅하는 거 같은데요. 먼제 setNeedDisplay부터 알아보도록 하겠습니다. setNeedsDisplay https://developer.apple.com/documentation/uikit/uiview/1622437-setneedsdisplay Apple Developer Documentation developer.apple.com setNeedsDisplay는 UIView의 메소드입니다. View의 전체 bounds를 다시 그려야 한다고 표시한다고 하네요. 다시 그리면 그렸지 표시한다는게 좀 낯섭니다. 이를 이해하기 위해서는..
-
Storyboard VS Code(Programmatically)iOS 2021. 12. 21. 19:37
안녕하세요. 오늘은 UI를 작성하는 대표적인 두 방법 스토리보드와 코드로 작성 두가지 방법을 비교해보도록 하겠습니다. Storyboard 장점 1. UI를 즉시 시각적으로 확인할 수 있다. 스토리보드로 UI를 작성한다면 가장 눈에 띄는 장점이 있죠? 앱을 실행시키지 않아도 바로바로 UI를 확인할 수 있습니다. 프로젝트에서 디자이너가 존재해서 디자인 가이드가 존재한다면 더할나위 없이 좋겠지만 그렇지 않을 수도 있습니다. 그럴 경우에는 작성한 UI를 즉시 확인할 수 있는 스토리보드가 강점을 보입니다. 2. ViewController의 코드 길이가 매우 짧아진다. View가 화면에 표시되기 위해서는 Frame이 필요합니다. 즉, (x, y, width, height) 값을 모두 알아야하는데 만약 오토레이아웃을..
-
Hugging & Compression ResistanceiOS 2021. 12. 21. 18:03
안녕하세요. 오늘은 AutoLayout 관련 프로퍼티인 Content Hugging Priority와 Content Compression Resistance Priority에 대해서 알아보도록 하겠습니다. 스토리보드에 View를 추가한 다음에 오토레이아웃을 설정하면 이런 프로퍼티들이 나타나는 것을 확인할 수 있습니다. 그 동안은 각각이 무엇을 의미하는지 정확히 알지 못해서 제약의 우선순위를 바꾸는 방법으로 문제를 해결하고는 했는데요. 오늘은 이 속성들이 무엇을 의미하는지 그 개념을 자세히 알아보도록 하겠습니다. intrinsicContentSize Hugging Priorty와 Compression Resistance Priority를 이해하기 위해서는 우선 intrinsicContentSize를 알아야..
-
ARC(Automatic Reference Counting)iOS 2021. 12. 20. 20:18
안녕하세요. 오늘은 ARC에 대해서 알아보도록 하겠습니다. 저는 그동안 자동으로 메모리를 관리해주는 방식으로만 알고 있었는데요. 이건 ARC를 알고 있다고 말할 수 없자나요? 그래서 오늘은 과연 ARC가 무엇인지 좀 더 자세히 알아보도록 하겠습니다. ARC 공식문서 Automatic Reference Counting — The Swift Programming Language (Swift 5.5) Automatic Reference Counting Swift uses Automatic Reference Counting (ARC) to track and manage your app’s memory usage. In most cases, this means that memory management “just ..
-
HashableSwift 2021. 12. 17. 15:27
안녕하세요. 오늘은 Hashable Protocol에 대해서 알아보도록 하겠습니다. https://developer.apple.com/documentation/swift/hashable/ Apple Developer Documentation developer.apple.com 와.. 한 문장에 hash라는 단어가 3번이나 쓰였습니다. hash가 무엇인지 알고 가야하겠네요. https://ko.wikipedia.org/wiki/해시_함수 해시 함수 - 위키백과, 우리 모두의 백과사전 이름을 0~15 사이의 정수값으로 매핑하는 해시 함수의 예. “John Smith”와 “Sandra Dee”라는 두 키 사이에 충돌이 존재한다. 해시 함수(hash function) 또는 해시 알고리즘(hash algorith..