티스토리 뷰
학습내용
1-2주차 프로젝트에 대한 이야기
- 숫자야구게임
- 묵찌빠게임
- 2개의 가장 큰 차이는 step1과 step2를 꼰 점.
- step1을 구현하고 step2를 하려는데 코드 전체를 갈아엎어야한다면 잘못 설계한 것이다. 이게 큰 프로젝트였다면?
- 설계, 로직이 정말 중요하다. 코드를 쓰기 전, 먼저 구상을 하는 것이 우선이다.
- 펜과 종이로 그려가면서 하는 게 좋다. 큰 삽질을 막을 수 있다.
- 문법은 하면서 자연스럽게 익히게 되는 것이다.
프로젝트 회고 - README에 기입
- 밀린 일기처럼 쓰면 안된다. 바로 써야된다.
- 프로젝트 회고를 하면 README에 꼭 적어야 한다. → 포트폴리오
- 느꼈던 점, 해결되지 않은 점, 고민했던 점
- 샘플
- step별로 뭘 했다.
- 뭘 공부했다
- 어떤 피드백을 받았다
- 다음 stpe은 뭘 공부했고
- 이것을 통해서 어떤 기능을 구현했다.
Design Patterns
-
디자인 패턴? == 설계 양식, 설계 템플릿
디자인 패턴 == 코드들의 모양세, 설계 템플릿 정도로 알아두면 된다.
-
함수를 나눠야하는 것처럼!
Programming Design Patterns
-
OOP의 다양한 문제상황에 대한 예방 - 짬이 차면 알게 되는 것. 그러한 것들을 정리해놓은 것!
-
프로그래머 사이의 협업효율 향상 - ex) 게임작전을 짤 때, 게임용어, 4드론
-
프로그래머 사이의 의사소통 증진 - ex) 게임작전을 짤 때, 게임용어, 4드론
-
코드의 안정화 및 최적화
-
코드의 재사용성 증가
적절히 사용해야한다.
수단으로 삼아야지, 목적으로 삼으면 안된다 → 주객전도한느 상황이 오면 안됨!
-
디자인 패턴은 일종의 설계 템플릿이지만, 꼭 똑같이 하지 않아도된다.
필요에 의해서 조금씩 변형해서 쓸 수 있다. 꼭 모든 걸 그대로 지킬 필요는 없다.
Architectures
-
Architectures : 뼈대, 큰 그림
ex) 집짓기
-
Design Patterns : 큰 Architectures 안에서 해결할 수 있는 하나의 방식
ex) 계단을 오르내리기 힘들어 → 에스컬레이터 설치
-
MVVM
(model-view-viewmodel) -
MVC
(Model-View-Controller) : Swift- https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html
- 모델-뷰-컨트롤러 나뉘어지는 친구들은 어떤 친구들일까?
- 데이터를 다룰 친구들, 화면을 다룰 친구들, 제어하는 친구들
- 뷰 라는 타입에서 인스턴스를 생성하면
- 뷰 - 사용자 화면에 보이는 것들은 전부 뷰다.
- 모델, 컨트롤러 - 사용자 화면에 안 보이는 것들
- 컨트롤러는 뷰와 모델을 중간다리 역할을 한다.
Xcode
-
View - main.storyboard에 보이는 것
-
View Controller - 화면에 없음. Class. Controller는 이 이름이 다 붙어있음.
-
ctrl + cmd / opt : 궁금한 게 있다!
-
model은 아직 많이 볼일이 없다.
-
model - 데이터 저장소의 형태
Struct Camper { var name: String var nickname: String var age: Int }
-
클래스와 구조체의 차이는 뭘까?
Value Types vs Reference Types
- Value Type
- Structure
- Enumeration
- Tuple
- Reference Type
- Class
- Closure
Value Types(Struct) vs Reference Types(Class)의 비교
struct PositionValue {
var x = 0.0
var y = 0.0
}
class PositionObject {
var x = 0.0
var y = 0.0
}
// 생성과 동시에 기본값 저장 - 기본생성자var v = PositionValue()
var o = PositionObject()
var v2 = v
var o2 = o
v2.x = 12
v2.y = 34
v.x // 0
v.y // 0
v2.x // 12
v2.y // 34// 구조체는 값형식으로, v2는 v의 복사본으로 v2에서 값을 바꿔도 v에는 아무런 변화가 없다.// v2와 v는 서로 다른 메모리 공간
o2.x = 12
o2.y = 34
o.x // 12
o.y // 34
o2.x // 12
o2.y // 34// 클래스는 새로운 복사본을 생성하지 않고 원본(참조)을 전달하기 때문에 어떤 변수를 통해서 속성을 바꾸더라도 항상 같은 대상을 바꾸게 된다.
- 어떤 것을 선택해야할까?
- 값 형식의 메모리 처리방식, 참조 형식의 메모리 처리방식
- 두 형식의 차이점을 알고 구현목적에 맞게 선택 - 하지만 경험이 필요
- 일반적인 구현 지침
- OOP에서는 대부분 참조형식인 class로 구현
- 상대적으로 적은 데이터를 저장하고 상속이 필요하지 않다면 값형식으로 구현
- 값이 전달되는 시점마다 복사본이 생성되어야 한다면 값형식으로 구현
- 연관된 상수 그룹을 표현할때는 열거형
- 코드내에서 한번만 사용되는 형식은 튜플
- 나머지 값형식은 모두 구조체
고민한 점 & 새로 알게 된 점
-
Type 정하기
-
쥬스메이커 과일의 재고관리 방법은?
-
Dict?
-
Array?
-
Enum?
→ Dict, Array, Enum의 각 장점은 무엇일까?
-
Struct?
-
Class?
→ Struct와 Class 차이 공부할 필요
-
-
쥬스메이커 프로젝트 실행을 어떻게?
-
단순 → 새로운 playground 실행
-
AppDelegate.swift에서 9번째줄 @main 삭제
JucieMaker.swift → Main.Swift 변경
-
ViewController를 통해 실행가능(정확히는 잘 모르겠음)
-
'TIL' 카테고리의 다른 글
TIL ('21.03.11) (0) | 2021.03.12 |
---|---|
TIL ('21.03.09) (0) | 2021.03.10 |
TIL ('21.03.07) (0) | 2021.03.08 |
TWL ('21.03.01~'21.03.05) with Kane, 강경 (0) | 2021.03.06 |
TIL ('21.03.05) (0) | 2021.03.06 |
- Total
- Today
- Yesterday
- 세자리수마다 콤마넣기
- 오버플로우연산자
- 객체지향 생활체조
- RawValues
- swift
- datatypes
- iOS View Life Cycle
- 오토레이아웃
- Constants
- playground
- 흐름제어구문
- variables
- labeled
- 반복문
- 전산구문 기초용어
- conditional
- 삼항연산자
- 훈련법
- overflow
- continue
- enumerations
- Functions
- scope
- 산술연산자
- 결합성
- 비트연산자
- optional
- 옵셔널
- 구문이름표
- 범위연산자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |