Programming
-
Swift - Failable InitialIzerProgramming/Swift 2021. 12. 17. 19:36
안녕하세요 BeePeach입니다 :) 길고 길던 initializer 포스팅이 거의 끝나가고 있습니다. 오늘 공부해볼 내용은 Failable initializer입니다. 지금까지 우리가 사용한 init은 초기화에 실패한 적이 없습니다. 하지만 만약 초기화될 값을 네트워크를 통해서 설정하려 하거나 특정 조건에 만족하는 값으로만 초기화하고 싶을 수 있습니다. 또는 init의 파라미터에 원치 않는 값이 전달됐을 경우도 있겠죠. 이럴 때 사용하는 게 failiable initailizer입니다. Failiable Initializer Failable init은 class, structure, enum에서 사용할 수 있습니다. 초기화에 실패할 수도 있고 성공할 수 도 있다. 그럼 성공하면 초기값이 할당되고 실패하..
-
iOS - Storyboard file 추가하는 방법Programming/iOS 2021. 12. 15. 01:43
안녕하세요 BeePeach입니다 :) 오늘은 Storyboard file을 새로 만들고 다른 storyboard와 연결하는 방법에 대해서 공부해보도록 하겠습니다. Storyboard를 추가하는 방법은 두 가지가 있습니다. New file로 새로운 storyboard file을 추가시키는 방법 이미 추가되어 있는 ViewController를 새로운 storyboard로 refactor 하는 방법 그럼 하나하나씩 살펴볼까요?!? 새로운 storyboard file 추가하기 먼저 New File로 storyboard file을 생성하고 직접 연결을 해보는 방법부터 보겠습니다. 1. 먼저 Cmd + N 또는 왼쪽의 project navigator에서 NewFile로 Storyboard를 추가합니다. 2. 추가 ..
-
iOS - Storyboard 살펴보기Programming/iOS 2021. 12. 14. 17:11
안녕하세요 BeePeach입니다 :) 우리가 앱의 UI를 만들 때는 코드로 만드는 방법과 storyboard를 이용해서 만드는 방법이 있습니다. 프로젝트를 생성하면 맨 처음 우리를 반겨주는 Main.storyboard file이 있죠. 그리고 대부분은 iOS 앱 개발의 첫 시작을 이 storyboard를 이용해서 UI를 구성하고 앱을 개발하게 됩니다. 그럼 도대체 storyboard가 뭔지 그리고 storyboard를 이용하는 방법에 대해서 공부를 해보려고 합니다. Storyboard 애플 개발자 문서의 설명을 가져와보겠습니다. Storyboard는 iOS 애플리케이션의 UI의 흐름을 시각적으로 표현한 것으로 화면의 내용과 화면과 화면 간의 연결을 보여줍니다. 그리고 storyboard는 viewCont..
-
Monterey에서 Xcode 13 이전 버전 실행하기Programming/갈 곳 잃은 친구들 2021. 12. 13. 15:34
아무 생각 없이 Monterey로 업그레이드를 시켰는데... Monterey에서는 Xcode 13.0 이상만 실행 가능하다고 한다... ㅠㅠ 왜 귀찮게 이렇게 만들어놨어요?? 해결 방법은 의외로 간단합니다. Xcode 이전 버전은 Applications 디렉토리에 넣어둔다. (이 부분은 다른 곳에 있어도 되는지는 실험 안 해봤습니다... 아마 경로는 상관없을 듯합니다.) terminal을 켜고 현재 경로와 앱 이름을 입력합니다. 만약 하기 귀찮다면 finder에서 앱을 terminal로 드래그하면 됩니다. 그럼 예를 들어 /Applications/Xcode_12.5.1.app 과 같이 표시할 수 있습니다. /Contents/MacOS/Xcode 이 명령어를 더 입력하면 완성 그럼 아래와 같은 명령어가 됩..
-
Swift - Initializer - Inheritance, OverridingProgramming/Swift 2021. 12. 11. 20:19
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 주제는 Init의 상속(Ingeritance)과 재정의(Override)입니다. Class는 상속과 재정의를 제공하죠?? 그럼 init은 상속이 가능한지? 가능하다면 언제 가능한지?, init도 override가 가능한지에 대해서 공부해보도록 하겠습니다. Swift에서는 기본적으로 init은 상속이 불가능합니다. 왜 그런지는 잠깐 생각해보면 알 수 있습니다. Superclass의 init이 그대로 상속이 된다면 만약 기본값이 없는 subclass에 정의된 프로퍼티는 초기화가 완벽하게 이루어지지 않은 채로 인스턴스가 생성되게 되겠죠??? 이러한 이유로 기본적으로는 init의 상속은 제한되어 있습니다. 그리고 이 말을 다시 뒤집어 생각하면 위 상황만 없다면..
-
Swift - Initializer - Two Phase InitializationProgramming/Swift 2021. 12. 6. 16:02
안녕하세요 BeePeach입니다 :) 오늘은 Init이 어떻게 초기화되는지에 대해서 조금 더 자세히 공부해보려고 합니다. 처음 보면 어렵게 느껴지지만 사실 어려운 게 하나도 없답니다 :) 천천히 여러 번 읽으면 충분이 이해하실 수 있습니다!! Swift 컴파일러의 4가지 안정성 체크 Swift에서 class의 초기화는 총 2단계로 진행됩니다. 첫 번째 단계에서는 class에서 정의한 모든 stored property에 초기값이 할당됩니다. 모든 stored property의 초기값이 정의되었다면 두 번째 단계가 시작됩니다. 두 번째 단계에서는 인스턴스를 사용할 준비가 되기 전에 stored property들을 custom 할 수 있게 됩니다. Swift complier는 2단계 초기화가 에러 없이 성공하..
-
Swift - Initializer DelegationProgramming/Swift 2021. 11. 28. 19:44
안녕하세요 BeePeach입니다 :) 오늘은 지난 포스팅에 이어서 Initializer의 Delegation에 대해서 공부해보도록 하겠습니다. 이번 장에서는 코드보다 설명이 대부분입니다. Initializer Delegation이란 initializer에서 다른 initializer를 호출하여 코드의 중복을 최대한 없애는 것을 의미합니다. Delegation은 Value type과 Reference type에서 구현방식이 조금 다릅니다. 이유는 상속의 유무 때문입니다. 그럼 먼저 Value type의 delegation부터 알아보도록 하겠습니다. Value Type의 initializer Delegation Value Type은 상속이 없기 때문에 delegation이 매우 간편합니다. 그냥 initia..
-
OS - Scheduling AlgorithmProgramming/CS 2021. 11. 18. 01:02
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 Scheduling Algorithm(스케쥴링 알고리즘)입니다. 이전 포스팅에서 가정한 것처럼 CPU는 한 번에 한 개의 프로세스만 사용할 수 있습니다. 그럼 여러개의 프로세스를 실행할 때 프로세스 스케쥴러가 어떤 프로세스를 먼저 실행시키도록 할까요?? 목적에 맞춰서 적절한 알고리즘을 택하겠죠? 스케쥴링 알고리즘이란 스케쥴러가 여러 개의 프로세스를 효과적이고 효율적으로 실행시키도록 관리하는 것을 말합니다. 이 알고리즘에는 여러 종류가 있는데요. 간단한 알고리즘 몇가지를 알아보려고 합니다. First Come First Served(FCFS) FCFS는 First In First Out(FIFO)로도 불립니다. 프로세스가 스케쥴러에 등록된 순서대로..