📱 Functions(함수) vs Computed Property(연산 프로퍼티) 🎯 문제 정의하기 예시를 통해 문제를 정의해보겠습니다. 티켓을 뽑아주는 발권기가 있다고 할 때 발권기는 현재 상태의 티켓 번호를 갖고, 누군가 티켓을 뽑는다면 티켓 번호를 하나 높여 상태를 유지합니다. 이것을 코드로 구현해보면 struct ticketGenerator { var ticketNumber: Int } 로 표현할 수 있습니다. 이제 추가적으로 필요한 것은 발권시 숫자를 하나씩 높여가는 로직입니다. 이것을 메소드로 구현하면 struct ticketGenerator { var ticketNumber: Int func raiseTicketNumber() -> Void { ticketNumber += 1 } } 가 됩니..
🙋 protocol에 메소드 없이 extension에서 메소드 구현하기 vs protocol에 메소드를 정의 후 extension에 구현하기 🎯 개념 이해하기 protocol default implementation을 하기 위해 protocol의 extension을 통해 메소드를 구현하다가 보면 두가지 옵션이 생깁니다. 예시를 통해 문제를 정의해보겠습니다. protocol Bank { // 이 부분 없이 구현 가능 func openAlert() func closeAlert() // } extension Bank { func openAlert() { print("은행 개점") } func closeAlert() { print("은행 폐점") } } 은행의 개점과 폐점을 알리는 메소드 openAlert와 c..
📱 Multi-Touch(멀티 터치) 직접 우리가 화면에 터치된 입력을 모두 추적할 수 있긴 하지만 그럴 필요가 없습니다. 대신 iOS가 모든 움직임을 관찰해서 스와이프, 확대/축소, 이동, 탭 등으로 변환한 정보를 사용합니다. iOS가 나타내는 모든 제스처는 UIGestureRecognizer 클래스입니다. 이 클래스는 모든 손가락의 움직임을 제스처로 나타냅니다. 추상적인 클래스이고, 모든 제스처를 인식할 수는 없습니다. 하지만 많은 서브클래스를 이용하면 다양한 제스처를 인식할 수 있습니다. 🏢 UIGestureRecognizer 제스처를 인식하면 크게 두 부분이 있습니다. 뷰에게 확대/축소나 탭을 인식하라고 말합니다(e.g. plz start recognizing pinches/tabs). 인식했을 ..
🎤 Table View and Collection View 🧐 Table View, Collection View 란? UIScrollView의 서브클래스로 무한한 양의(unbounded) 정보에 무한한 접근을 제공하기 위해 사용됩니다. 하지만 자료를 보여주는 방식에서 차이가 발생합니다. Table View: 정보를 하나의 긴 리스트로 보여줍니다(섹션 분리는 가능합니다). Collection View: 다양한 방식이 가능하지만 기본적으로 정보를 2D 포맷으로 보여줍니다(주로 text flow 같은 flowing으로). 여기서 text flow란 글을 읽듯이 왼쪽에서 오른쪽으로, 그리고 다음 줄로 이어서 계속 작성하는 방식을 말합니다. 컬렉션 뷰는 커스터마이징이 가능합니다. 결국 두 View의 차이는 하나는..
🎤 Swift 프로그래밍 언어 - Part 1 🕹 Concentration Game UI 변경 2강까지 완성한 게임의 UI는 괜찮은 것 처럼 보입니다. 하지만 화면을 회전하거나 다른 기기에서 작동시키면 화면이 이상하게 나오는 것을 확인할 수 있습니다. 위의 그림처럼 왼쪽 위를 기준으로 UI가 배치되는 것을 확인할 수 있습니다. 이것을 해결하기 위해서 Stack View를 활용해 보겠습니다. 먼저 묶어주고 싶은 요소들을 블록처리한 후 아래 그림처럼 버튼을 클릭합니다. 이제 4개의 버튼이 하나의 View에 담겼습니다. Spacing을 standard로 해주고 fill equally 옵션을 준 후 아래 두줄에도 같은 작업을 진행합니다. 그 결과로 가로로 3줄의 Stack View가 생겼습니다. 이 Stac..
Control Event(컨트롤 이벤트) 종류 컨트롤이 발생했을 때 그 컨트롤의 종류를 의미하며 UIControl에 Event라는 타입으로 정의되어 있습니다. 컨트롤 객체에 발생할 수 있는 이벤트의 종류 이벤트 종류 설명 표현법 touchDown 컨트롤을 터치했을 때 발생하는 이벤트 UIControl.Event.touchDown touchDownRepeat 컨트롤을 연속 터치(반복) 할 때 발생하는 이벤트 UIControl.Event.touchDownRepeat touchDragInside 컨트롤 범위 내에서 터치한 영역을 드래그 할 때 발생하는 이벤트 UIControl.Event.touchDragInside touchDragOutside 터치 영역이 컨트롤의 바깥쪽에서 드래그 할 때 발생하는 이벤트 U..
🎯 MVC(Model - View - Controller)? 💬 what is MVC? 기본적으로 시스템 안의 모든 객체는 세가지의 카테고리로 나눌 수 있습니다. Model: What your application is about (but not how it is displayed) 앱에서 UI와 독립적인 객체들로 '무엇'에 해당하는 요소들을 가지고 있습니다. 예를 들어, Concentration Game에서는 게임 자체를 할 줄 아는 부분에 해당합니다. 카드가 매치되는지, 카드를 제거해야하는지, 언제 카드를 뒤집어야하는지 같은 부분입니다. (Knowledge of the game) Controller: How your Model is presented to the user (UI Logi..
📱 [스탠포드] iOS 강의 학습하기 (CS193p by Paul Hegarty in Stanford) 스탠포드의 Paul Hegarty 교수님께서 진행하신 CS193p 강의를 통해 iOS에 대한 전반적인 기초를 알아보고자 합니다. 블로그에는 강의 단위로 업로드할 계획입니다. 단순히 강의 내용을 필기하는 블로깅이 아니라 추가적인 자료 조사나 다른 강의 내용에서 습득한 내용을 추가하는 형식의 블로그가 될 예정입니다. 🎯 Lecture.01 Introduction iOS에 대한 전반적인 설명과 사용법에 대한 간단한 설명을 진행합니다. 실습해본 git Repository 📝 Swift 언어의 특징 Swift는 객체 지향 프로그래밍(Object Oriented Prograaming)이 가능하지만 함수 지향 프로..
- Total
- Today
- Yesterday
- 랜선자르기#이분탐색#BOJ#Python
- PassingCars#Codility#Python
- 반복수열#백준알고리즘#Python
- N으로 표현#DP#Programmers#Python
- 파이썬알고리즘인터뷰#4장
- 순열사이클#BOJ#Python
- 터틀비치#리콘#xbox#controller
- Swift#Tuples#Range
- 백준 알고리즘#BackTracking
- Distinct#Codility#Python
- API#lazy#
- django#slicing
- django
- Brackets#Stacks and Queues#Codility#Python
- 병든 나이트#BOJ#탐욕법#Python
- Triangle#Sorting#Codility#Python
- 날짜 계산#BOJ#완전탐색#Python
- 배열합치기#분할정복#BOJ#Python
- 미로 탐색#백준알고리즘#Python
- 쿼드트리#BOJ#분할정복#Python
- 섬의개수#백준알고리즘#Python
- 텀 프로젝트#백준알고리즘#Python
- 토마토#백준알고리즘#Python
- 나무자르기#BOJ#이분탐색#Python
- 종이자르기#분할정복#BOJ#Python
- filter#isalnum#lower
- NumberofDiscIntersections#Codility#Sort#Python
- 공유기 설치#BOJ#이분탐색#Python
- 리모컨#완전탐색#BOJ#Python
- 암호코드#dp#BOJ#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |