3~5의 경우는 #1 코드에서 개념을 끝내버렸기 때문에, https://github.com/iamchiwon/RxSwiftIn4_Hours/blob/master/README.md 에 있는 목차만 남겨둔다. 3. Observable Life-Cycle Subscrib
0. 예제 프로그램 설명 튀김 리스트를 json으로 불러오고, 하나씩 추가할 때 요청을 보내서 마지막에 가격까지 계산해주는 간단한(?) 어플리케이션을 만들었다. 1. 폴더 구조 곰튀김님 github 에 Step3 코드를 보면 된다. Step3 : UIKit 으로
RxSwift 3교시 에서 이미 사용한 것들이지만, 글이 길어져서 3교시 정리도 같이 진행하려고 한다. MVC, MVP, MVVM 구조 에서 공부할 때는 디자인 패턴의 개념만 얼추 이해가 되고, 코드는 잘 이해가 안갔었는데 설명을 듣고 보니 이해가 잘 가서 놀랍다.
1. 만들고 싶었던 것 : 체크박스 처음부터 RxSwift 로 만드는 것은 무리일 것 같아서 View를 다 짜고 동작을 제대로 하는지 확인 후, 제대로 동작하길래 RxSwift로 리팩토링을 하고 싶었다. RxCocoa 에 checkButton.rx.tap 이라는
RxSwift 정리 를 보고 공부하고 있다. Ch1 ~ Ch3 의 경우는 앞서 정리했던 곰튀김님의 강의에서 들은 Observable과 Subject를 조금 더 실용적인 예제로 살펴보고 문제도 풀어보는 정도의 내용이었다. Ch4는 Relay, Subject 를 이용한
1. Ignoring Operators 1. .ignoreElements() .next 무시 .completed, .error 는 허용 2. .element(at: index) 해당 index에 있는 요소만 방출 index는 0부터 시작. 3. .filter(
분명 JavaScript 에서 console.log 찍어서 확인해보는 것처럼 Xcode 에도 breakpoint 걸렸을 때 어떤 변수가 어떻게 설정 되어 있는지를 볼 수 있는 방법이 있을 것 같았다. 실제로 cmd + shift + y 를 눌러서 나오는 창에 이렇게 커
raywenderlich RxSwift Ch7~8 기존 코드를 읽으면서 가장 이해가 안가는!!!!!! 파트가 왔다. 여기를 제대로 공부하는게 중요한 것 같다. 1. Transforming Elements Observable 에서 방출되는 요소들은 독립적이지만, 이
CI/CD 라는게 있고, 배포 자동화를 한다는 것은 알고 있었지만, 여태 앱스토어에 앱을 배포해 본 경험은 없었기 때문에 딱히 CI/CD 의 필요성을 느끼진 못했다. 그런데 급박하게 내가 배포를 하는 상황이 오면서 여러 절차를 하나하나 알아내서 파일 뽑고 클릭하고
1. 앞에 붙이기 1. startWith(_: Item) Observable sequence 맨 앞에 기존 Observable 의 type 과 같은 type 의 data 를 붙여준다. 현재 상태에 초기값을 붙여서 전달할 때 사용. 2. concat(_:) 2개의
bottom 은 진짜 bottom 에 붙이고, top 을 safeArea 의 bottom 에 붙인 후, 해당 View의 높이만큼 offset 을 주면 된다.버튼에 UIEdgeInset 을 줘서 버튼 내의 텍스트 위치를 조절했기 때문에, 이것은 약간 조정이 필요해보인다.
발단 위와 같은 디자인의 순서를 변경하는 UI를 만들어야 했다. 일단 대략적인 방법은 머릿속에 잡혔는데, 첫번째 방법 멜론, 유투브 뮤직 같은 음악 앱이나 다른 여러가지 어플리케이션에서 사용하는 순서 변경 방법. 편집 버튼이 따로 있어서 일반적으로 보는 모드와
원래는.. 필요한건 직접 만들어쓰자 주의였는데, 사용해보니 라이브러리를 왜 쓰는지 너무 알겠다... 물론 만들어봐야 공부가 되니까 직접 만들어보기도 할 것임. 언제..? 언젠가는...NSAttributedString SwiftRichString https://
iOS 스터디를 진행하려고 했는데, 프로젝트 벌려놓은 것도 막막하고 문법 가이드도 몇 번 읽었지만 완벽하게 아는 것은 아니라는 생각이 들어서 문법 스터디를 진행하기로 했다.기간 : 0321~0410 (4주)내용 문법 가이드 평일 하루에 한 주제씩 읽고, 요약 정리 ht
기능 제대로 구현하는데 1주일 정도 걸린듯.. 버그도 많아서 진짜.. 힘들었네... 1. 옆으로 스와이프 되는 컬렉션뷰 만들기 일단, 비디오는 넣지 않고 이미지만 넣어서 만들고 마지막에 영상을 넣어보려고 한다. Image Cell 왼쪽 오른쪽 모두 무한 스크롤
3. 컬렉션뷰 페이징 넘기는거에 맞춰서 자동재생되게 하기. nowPage 추가 참고 스크롤뷰로 이미지 페이지처럼 넘기기 https://fomaios.tistory.com/entry/Swift-스크롤뷰로-이미지-페이지처럼-넘기기Image-Paging-with-UI
a
for, while, if, guard, switch, break, continue다른 언어와 거의 동일하다고 봐도 무방하다.배열, 숫자 범위, 문자열, 딕셔너리, ... 에 for - in 루프를 적용해서 요소 하나하나에 접근할 수 있다.앞 내용에서 대체로 다뤘었고,
코드에서 주변에 전달, 사용할 수 있는 기능 블럭. inline functionC의 블럭과 파이썬의 람다와 유사하다.정의된 컨텍스트에서 모든 상수와 변수에 대한 참조를 캡처하고 저장할 수 있다. -> 이런 상수와 변수를 closing over 라고 하고, 캡처된 상수와
어떤 그룹의 여러 케이스를 나타낸다., 로 구분할 수 있다.switch 구문을 이용해서 enum 케이스에 따라 처리할 수 있다.switch 문에서는 모든 케이스를 고려해야 하므로, 모든 경우를 따질 필요가 없을 땐, default 를 이용해서 처리한다.CaseItera
.으로 접근구조체는 멤버별 초기화 구문이 자동 생성 되지만,클래스는 그렇지 않음. 필요하면 직접 정의해야함.구조체와 열거형은 값 타입이라 사용할 때 복사해서 사용한다. (기존 값 유지)하지만, 클래스는 참조 타입이라 같은 인스턴스를 참조해서 사용한다. (기존 값도 바뀜
struct, class, enum 안에 선언할 수 있고, 대체로 특정 타입의 인스턴스이다.그 중 저장 프로퍼티는 struct, class 안에만 선언할 수 있다.프로퍼티 관찰자를 통해 값이 변경되는 것을 모니터링하고, 특정 동작을 수행하게 할 수 있다.저장된 상수,
클래스, 구조체, 열거형 에서 특정 기능을 캡슐화하는 인스턴트 메서드를 정의할 수 있다.프로퍼티처럼 타입에 관련된 메서드도 정의 가능.구조체와 열거형에서도 가능하다는게 C/obj-C 와 Swift 의 큰 차이점.함수와 문법은 동일하다! 그저 클래스, 구조체, 열거형 내
콜렉션, 목록, 시퀀스 멤버 요소에 접근할 수 있는 단축키클래스, 구조체, 열거형에서 정의 가능.arr\[index], dict\[key] 와 같은 문법으로 인스턴스 안의 요소에 접근하는 것.computed property 와 유사보통은 바로가기로 사용됨.optiona
와 이거 몰라서... 파이어베이스 로그만 쳐다봤는데... 앱을 껐다 켤때 알아서 디버그 모드로 실행해준다고 한다.앱 이름을 넣고 Attach.이렇게 붙이고, 앱을 실행하면, 앱이 꺼져있다가 켜지는 순간부터 디버깅을 할 수 있다. 대신 휴대폰을 끄거나 백그라운드에서 앱을
클래스 는 메소드, 프로퍼티, 특징 을 다른 클래스에서 상속해서 사용할 수 있다.구조체와 클래스의 가장 큰 차이점.저장 프로퍼티와 계산 프로퍼티에 관계없이, 상속받은 프로퍼티에 프로퍼티 옵저버를 설정할 수 있다.다른 어떤 클래스도 상속받지 않은 클래스.예시) curre
초기화 (Initialization) : 클래스, 구조체, 열거형 인스턴스를 사용하기 위해 준비하는 단계. (초기값을 설정해서 메모리에 할당하고...) initializer 를 정의하여 구현할 수 있다. 값을 반환하지 않음. 초기화와 반대로, 값과 자원의 해지를
초기화 해제 구문클래스 인스턴스가 할당 해제되기 직전에 호출된다.deinit 키워드로 작성.클래스 타입에서만 가능!!Swift 는 자동 참조 카운팅 (ARC) 를 통해서 메모리를 관리한다.더 이상 필요하지 않아진(참조 카운트가 0인) 인스턴스를 메모리에서 해제하는 것.
- Optional Chaining : `nil` 일 가능성이 있는 프로퍼티, 메서드, 서브스크립트를 조회하고 호출하기 위한 프로세스. - 옵셔널에 값이 포함되면 성공, `nil`이면 nil 을 반환한다. - nil 이 반환되면 즉시 체인이 실패된다.
Error Handling : 프로그램의 에러 조건에서 에러에 응답하고 복구하는 프로세스. 작업이 실패하는 경우 그에 따른 처리를 해줄 수 있도록! ex) 디스크 파일에서 데이터를 읽는데, 지정된 파일이 없다면... 1. 에러 표현과 던지기 Swift 에서 Erro
동시성
Type Casting 인스턴스의 타입을 확인하거나 해당 인스턴스를 다른 상위 클래스 or 하위 클래스로 취급하는 방법 is, as 연산자로 구현된다. 프로토콜을 준수하는지도 확인할 수 있음. 예시 클래스 정의 1. 타입 검사 is 로 해당 인스턴스가 하위 클래
클래스, 구조체, 열거형, 프로토콜 타입에 새로운 기능을 추가한다.기존 소스 코드에 접근 권한이 없어도 확장할 수 있다.extension 에서 할 수 있는 것computed instance property, computed type property 추가instance
필요한 변수, 함수를 정의만 하고, 클래스, 구조체, 열거형 에서 채택해서 구현 프로토콜의 요구사항을 모두 구현하면 프로토콜을 준수 한다고 함. 1. 프로토콜 문법 2. Property 인스턴스 프로퍼티, 타입 프로퍼티를 모두 요구사항으로 넣을 수 있다. 이름과
모든 타입에서 동작하는 유연한 함수, 타입을 작성할 수 있다. 중복되는 코드를 피하기 위해서 작성 타입을 추상화 한다고 보면됨. 1. 제너릭이 해결하는 문제 아래의 세 함수는 같은 역할을 하지만, input 타입 때문에 다 따로 씀. 여기에서 중요한 것은 a, b
함수의 반환 타입을 비공개로 유지하는 것.함수의 반환 타입으로 구체적인 타입을 제공하지 않고, 프로토콜 측면에서 서술한다.타입의 정체성이 보존된다? - 컴파일러는 타입 정보에 접근이 되는데, 클라이언트는 그럴 수 없다?ASCII 그림을 그리는 모듈을 작성한다고 가정하면
Automatic Reference Conting 자동 참조 카운팅Swift 가 자동적으로 메모리를 추적하고 관리하기 위해서 사용한다.ARC 는 인스턴스가 필요하지 않을 때, 메모리에서 내린다.하지만, 프로그래머가 명시적으로 해결해야하는 상황이 있다.참조 카운팅이기 때
Swift 는 기본적으로 코드에서 발생하는 불안전한 동작들을 자동으로 방지해준다. 변수가 사용 전에 초기화 되어 있는지, 할당 해제 후에는 접근하지 않음. 배열 인덱스 범위를 벗어나는지 ... 메모리 위치를 수정하는 코드가 해당 메모리에 대한 독점 권한을 가지도록 요
다른 소스 파일과 모듈에서 코드의 부분에 접근할 수 있는 권한을 제어한다. 코드의 세부 구현을 숨기고, 해당 코드에 접근하고 사용하는 기본 인터페이스를 지정한다. 개별 타입 (클래스, 구조체, 열거형) 과 해당 타입 내에 있는 property, method, init
기본 연산자 외에도 비트 연산자 같은 고급 연산자가 제공된다. Swift 의 연산자는 오버플로우가 없다!!! 그래서 오버플로우가 되는 연산자는 따로 있음. 사용자가 직접 중위, 접두사, 접미사, 할당 연산자를 자유롭게 정의할 수 있다. 해당 연산자 지원을 위해 exte
고차함수 : 매개변수로 함수를 가지는 함수 Map, Filter, Reduce 는 모두 고차함수다!컨테이너 안의 요소에 매개변수로 전달되는 함수를 실행해서 그 결과를 다시 컨테이너로 감싸서 반환한다.Sequence, Collection 프로토콜을 따르는 타입, Opti
함수형 프로그래밍을 이해하기 위한 개념수학적인 용어 - 범주론순서가 있는 연산을 처리할 때 활용하는 디자인 패턴수학적인 모나드의 개념을 100% 만족하는건 아니라 모나딕 이라고도 부름.타입을 인자로 받는 타입 (특정 타입의 값을 포장)특정 타입의 값을 포장한 것을 반환