32YB SOPT 21

[SOPT] 합동세미나 review (부제 : 눈물의 첫 얼렁뚱땅 프로젝트)

2023.05.13 ~. 5.27 (2주) SOPT iOS 32YB 신지원의 첫 합동 세미나 토스 iOS APP 리디자인 구현 사실 시작할 때만 해도 세미나랑 과제 이해안된다고 집에서 혼자 찡찡대고 울고 난리를 폈었다. 합세 과제를 받았던 첫 날에도 '네비게이션 바'가 뭔지도 몰라서 희재(우리 조장) 몰래 화장실 가서 네비게이션 바가 뭔지 쳐보고 온 다음 아는 척하고 그랬다. 그리고 카페에서 아요끼리 다같이 공부할 때만 해도 답답한 나머지 화장실 가서 몰래 울고 왔는데 ,,, 합세 끝나고 나니 정말 많이 성장한 것 같다. 이게 SOPT 의 힘일까? 이제는 울지 않는다는 것이, 그리고 자신있게 모르는 것을 물어볼 수 있다는 것이, 물어볼 든든한 친구들이 생겼다는 것이 나에게 큰 변화로 다가왔다. 코드 자체..

[SOPT] 야우쓰_6주차 (속성, 프로퍼티)

야우쓰란? "야 우리도 스위프트 할 수 있어" in SOPT iOS 6주차의 키워드는 속성이다. - 프로퍼티 우선 프로퍼티가 무엇일까 ? 프로퍼티는 클래스, 구조체, 열거형과 관련된 값이다. 코드를 짜면서 선언했던 변수나 상수가 프로퍼티라는 것이다. swift 에서 프로퍼티는 3가지로 구분된다. 1. 저장 프로퍼티 저장 프로퍼티는 단순히 값을 저장하는 프로퍼티다. 내가 흔히 생각했던 프로퍼티가 이에 해당한다. let 이나 var 를 사용하여 상수, 변수를 선언한다. let을 사용한다면, 구조체나 클래스 안에서 let의 값을 변경할 수 없다. lazy는 지연 저장 프로퍼티로, 그 값이 사용되기 전까진 값을 갖지 않는다. 후에 값이 정해지기 때문에 보통 lazy와 var 를 같이 사용한다. 2. 연산 프로퍼..

[SOPT] 야우쓰_5주차(구조체 vs 클래스, 메모리 구조)

야우쓰란? "야 우리도 스위프트 할 수 있어" in SOPT iOS 5주차의 키워드는 구조체 vs 클래스 메모리 구조다. 너무 간단하게 조사하였습니다. 제송합니당,, - 메모리 구조 swift 의 메모리 구조는 Code, Data, Heap, Stack 으로 이루어진다. Code 영역 우리가 작성한 소스 코드가 기계어 형태로 저장되어 있으며, 컴파일 타임에 결정되고, read-only 형태로 저장된다. Data 영역 전역 변수, static 변수가 저장된다 프로그램 시작과 동시에 할당되며, 프로그램이 종료되어야 메모리에서 해제된다. 변수 값들이 새로운 값을 받을 수 있으니 read-write 로 지정된다. Heap 영역 ARC에 의하여 Reference Countin 이 관리되는 영역이다. 유일하게 ru..

[SOPT] 야우쓰_4주차 (컬렉션 타입, array, dictionary, set, 값타입, 참조타입)

야우쓰란? "야 우리도 스위프트 할 수 있어" in SOPT iOS 4주차의 키워드는 컬렉션 타입이다. - 컬렉션 타입 (Collection Types) 컬렉션타입(collection types)이란 이름 그대로 데이터를 수집한다는 의미이다. array, set, dictionary 이렇게 3가지 타입을 지원한다. - 배열 (Array) 배열은 [element] 로 사용할 수 있으며, 아래와 같이 선언할 수 있다. 또한 값을 추가할 때는 append 를 사용하여 추가한다. //배열 선언 var jiwon = [Int]() //var 로 선언해야 값 변경 가능 jiwon.append(3) //Prints [3] //특정 위치에 삽입하고 싶다면 insert 를 사용한다 //ex) jiwon.insert(0,..

[SOPT] 야우쓰_3주차 (열거형 튜플, enum, Associated Type)

야우쓰란? "야 우리도 스위프트 할 수 있어" in SOPT iOS 3주차의 키워드는 열거형 튜플이다. - 튜플 튜플(tuple)이란 셀 수 있는 수량의 순서 있는 열거다. swift 에선 여러 개의 데이터를 모은 집합으로 추가와 삭제가 가능하다. 가장 큰 특징은 다른 타입을 사용해도 상관없다! 그렇다면 바로 예시를 살펴보자! //1. var tuple : (String, Int, Bool) = ("My age is", 20, false) var ttuple = ("jiwon is", "beautiful", true) //Prints //("My age is", 20, false) //("jiwon is", " beautiful", true) //2. var tuple : (String, Int, Boo..

[SOPT] 야우쓰_2주차 (옵셔널 삼항연산자)

야우쓰란? "야 우리도 스위프트 할 수 있어" in SOPT iOS 2주차의 키워드는 옵셔널 삼항연산자다. - optional 직역하면, optional 이란 wrapped 된 값이나 값의 부재를 나타낸다. 구체적으로 말하자면, 반환하고자 하는 값을 optinal 로 한 번 더 wrapped 하는 것을 의미한다. 왜냐하면 선언한 변수에 값이 없을 수도 있기 때문에, nil 값을 고려한 개념이라고 생각해줄 수 있다. 따라서 값이 있다면 값이 있다고 판단하고, 정상적인 변환이 불가능하다면 nil 값을 반환하고 프로그램이 종료된다. ++ 일반적인 변수, 상수에는 nil 값을 직접적으로 대입할 수 없다. 따라서 옵셔널 타입으로 설정해주어야 nil 대입이 가능하다. var i = 0 i = nil print(i)..

[SOPT] 애니메이션_2주차 (UIGestureRecognizer 중 UIPanGestureRecognizer)

애니메이션 클론코딩 스터디 in SOPT iOS 2주차는 UIGestureRecognizer 에 대하여 공부하였다. UIGesureRecognizer 는 class 의 한 종류이고 말 그대로 gesture 와 관련된 class 다. 아래와 같이 8개의 제스처를 제공한다. - UITapGestureRecognizer - UIPinchGestureRecognizer - UIRotainGestureRecognizer - UISwipeGestureRecognizer - UIPanGestureRecognizer - UIScreenEdgePanGestureRecognizer - UILongPressGestureRecognizer - UIHoverGestureRecognizer 구체적인 제스처 사용법은 따로 포스팅하..

[SOPT] 야우쓰_1주차 (swift 타입 / 기본 연산자 / 조건문 / 반복문 )

야우쓰란? "야 우리도 스위프트 할 수 있어" in SOPT iOS 1주차의 키워드는 타입 / 기본연산자 / 조건문 / 반복문 이다. - 타입 1. bool bool 은 true 와 false 만을 값으로 가진다. var godotHasArrived = false let numbers = 1...5 let containsTen = numbers.contains(10) print(containsTen) // Prints "false" let (a, b) = (100, 101) let aFirst = a < b print(aFirst) // Prints "true" 위는 애플디벨로퍼 공식 문서다. 그렇다면 나는 궁금한 점이 생겼다. 왜 containsTen 이나 aFirst 를 bool 이라고 정의하지 않았..

[SOPT] iOS_2주차_과제

Closure's Capture List Closure 란 이제는 많이 들어봤어도 (이름 없는 함수 느낌) , Capture List 라는 것은 처음 들어본다. 먼저 Capture 란, 클로저를 변수에 할당하거나 클로저를 호출하는 순간, 자신이 참조하는 외부의 변수를 캡쳐한다. 예를 들어, 클로저에서 stored로 선언된 변수를 사용하고자 힙에 저장되는 클로저에 stored 변수 주소를 캡처하는 것을 의미한다고 할 수 있다. 이때 값 자체를 복사해서 사용할 수 있는 캡처리스트도 존재한다. 캡쳐리스트란, 주변 환경의 범위에서 참조한 변수들을 얼마나 강하게 캡쳐해야 하는지를 명시하는 것으로, 이를 통해 메모리 누수를 일으키는 강한 참조 순환을 피할 수 있다. 강한 참조 순환으로는 Closure 의 강한 참조..

[SOPT] iOS_2주차_정규세미나 (데이터 전달 심화, SnapKit을 통한 AutoLayout, InjectIII, Then)

목차 1. 데이터 전달 심화 - Protocol / Delegation을 활용한 데이터 전달 - Notification Center를 활용한 데이터 전달 - Closure를 활용한 데이터 전달 - Segue prepare 메소드를 활용한 데이터 전달 2. AutoLayout - Frame-Based Layout - Auto-Layout 3. InjectionIII, SnapKit, Then - SPM (Swift Package Manager) - InjectionIII - SnapKit - Then 4. 실습 코드 - Protocol / Delegation 을 활용한 데이터 전달 실습 - Notification Center 를 활용한 데이터 전달 실습 23.04.12 SOPT iOS 2주차 정규세미나 내..