오늘 = 어제 + a

a >= 1

스탠포드 6

[iOS] 스탠포드 CS193P 10강

이번 10강에서는 멀티쓰레딩과 오토레이아웃에 대해서 다룹니다. Multithreading 기본적으로 UI관련 코드는 메인쓰레드에서 실행됩니다. iOS에서는 UI의 반응성을 중요하게 생각하고, 입장에서 앱이 멈추지 않고 즉각적으로 반응하기를 바라기 때문입니다. Queues 멀티쓰레딩은 거의 iOS의 "큐"에 관한 내용입니다. 메서드들을 큐에 줄 세운 다음 큐에서 메서드들을 꺼내서 실행시키게됩니다. 큐는 "serial"이거나 "concurrent" 일 수 있습니다. 멀티코어 프로세서를 사용하는 기기라면 병렬적으로 실행 할 수 있습니다. 오랜 시간이 걸리는 네트워크 작업 같은 것들은 Global 큐에서 실행하는 것이 좋다고 합니다. Main 큐 👉 UI 관련 기능만을 수행한다 Global 큐 👉 main 큐에..

CS193P 2021.09.14

[iOS] 스탠포드 CS193P 9강

이번에는 9강에 배운 뷰 컨트롤러 라이프 사이클(생명주기)과 스크롤뷰에 대해 정리해봤습니다. ViewController의 생명주기 생명주기를 배워야 하는 이유는 뷰컨트롤러가 생성되면서 호출되는 메서드들 사이에 사용자가 직접 개입하고 싶은 상황이 생기기 때문입니다. 아래와 같이 주기를 갖기 때문에 "Life cycle(생명주기)"라고 합니다. 아래 이미지 외에 추가로 loadView, viewDidLoad 등 다른 메서드도 존재합니다. loadView는 뷰를 만들고 메모리에 올리는 역할을 하고, viewDidLoad는 UIViewController가 메모리에 로드 된 후 수행할 동작을 작성하게 됩니다. 이처럼 iOS에서 뷰컨트롤러의 생명주기에서 작동하는 메서드들을 오버라이드해서 사용자가 원하는 기능들을 구..

CS193P 2021.09.02

[iOS] 스탠포드 CS193P 6강

6강에서는 앞서 진행했던 PlayingCard 데모에서 만들었던 카드에 tap, swipe 제스쳐가 발생할 때 카드의 모습을 바꿔주는 데모를 했습니다. 해당 데모는 UIGestureRecognizer를 다루는 것으로 tap, swipe 제스쳐를 처리했고, 각 기능에 대해 소개하는 것으로 6강은 마무리 됐습니다. 이번 6강 정리에서는 UIGestuerRecognizer에 대한 정리와 함께 데모에서 다뤘던 것들을 기록해봤습니다. UIGestureRecognizer Gesture Recognizer는 일반적인 제스처나 제스처의 변경을 인지했을 때 지정된 타겟 객체에 동작 메시지를 보냅니다. var state: UIGestureRecognizerState { get } UIGestureRecognizer는 상태..

CS193P 2021.08.31

[iOS] 스탠포드 CS193P 5강 - 2

Views 👉 뷰는 사각형의 공간을 나타냅니다. 공간은 좌표 시스템에 의해 정의되고 그려집니다. 그리고 터치 이벤트들을 처리하는 기능을 수행합니다. 👉 뷰는 계층적인 특징을 갖고 있는데 특정 뷰는 항상 하나의 superview를 갖고, subview를 갖고 있지 않거나 1개 이상 가질 수 있습니다. 👉 뷰들이 그려지는 순서는 최근에 subview로 추가된 뷰가 가장 위에 그려지게 됩니다. 👉 뷰는 subview의 겹치지 않은 부분을 자를 수도 있습니다. 자르지 않는 것이 기본입니다. (참고한 문장: A view can clip its subviews to its own bounds or not (the default is not to)). 👉 UIView는 뷰 계층의 가장 위에 있습니다. UIView위에..

CS193P 2021.08.20

[iOS] 스탠포드 CS193P 4강

Swift 지난 강의에 이어 Swift 문법에 대해 정리하려고 합니다. 다음 강의에서부터는 iOS와 UIKit과 괕은 것들을 살펴볼 예정입니다. Struct Concentration 클래스를 구조체로 바꿨습니다. 이 때 chooseCard() 함수에서 "self is immutable" 이라는 에러가 나옵니다. 구조체의 변수를 바꾸려고 하면 나오는 에러입니다. 이 에러는 함수 앞에 mutating을 명시하면서 해결할 수 있습니다. 🤔 왜 구조체가 필요한가요? 👉 "value type, not reference type" 구조체는 값이 전달될 때마다 복사됩니다. 굉장히 비효율적이죠. 하지만 스위프트는 영리해서 값이 변경될 때만 복제합니다. 이것은 "copy on write" 이라고 합니다. 클래스는 이것이..

CS193P 2021.08.18

[iOS] 스탠포드 CS193P 3강

이번 강의는 Autolayout에 대한 간략한 설명과 Swift 문법을 다뤘습니다. Autolayout 위 이미지에서 카드 배열에서 잘리는 부분이 생기는 이슈를 볼 수 있습니다. 이 이슈를 해결하기 위한 도구로 "Autolayout"을 소개합니다. Autolayout은 이번 강의에서는 teaser 수준으로 안내하고 다른 강의에서 다룬다고 합니다. Autolayout을 다루기 전에 위 이슈를 해결하기 위해 아래 두 가지 작업을 해야 합니다. 12개의 버튼을 한 그룹으로 묶기 👉 세로 방향의 Stack과 가로 방향의 Stack을 활용해서 12개의 버튼을 묶는다 그룹을 사면에 붙이기 Top Space to Safe Area Leading Space to Safe Area Trailing Space to Saf..

CS193P 2021.08.18