일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rxswift
- HIG
- 클린 코드
- map
- SWIFT
- 스위프트
- MVVM
- uiscrollview
- swift documentation
- ios
- Xcode
- UICollectionView
- 애니메이션
- UITextView
- Observable
- Protocol
- clean architecture
- Human interface guide
- Refactoring
- ribs
- 리펙터링
- Clean Code
- 리펙토링
- collectionview
- swiftUI
- combine
- 리팩토링
- uitableview
- RxCocoa
- tableView
- Today
- Total
목록분류 전체보기 (1638)
김종권의 iOS 앱 개발 알아가기
1. git add 원리 1) git add 2) 내부 정보 index - 파일의 이름, id objects - 파일의 내용 ※ cp할 경우 같은 object를 가리킴 내용이 같으면 같은 object를 가리킴 cp f1.txt f3.txt 2. objects 파일명의 원리 - hash * 원리 hello의 해쉬값인 aaf4c..., 여기서 두 글자(aa)를 떼서 objects디렉토리 밑에 "aa" 디렉토리 생성 3번째 문자열 부터(f4c6~) 나머지 문자열 이름의 파일을 만들어서 hello의 내용을 저장 * git add하면 내부적으로 일어나는 현상 해당 파일의 내용 확인 -> 내용 압축 -> SHA1해쉬 통과 -> 위의 원리를 통해 디렉토리, 파일 생성 후 내용 기입 3. commit의 원리 - com..
1. 과거의 버전으로 되돌리기 1) 세 개의 트리 개념 Git을 서로 다른 세 트리로 보고 컨텐츠를 관리하는 관리자라 하면 다음 세 가지를 관리 트리 역할 개념 HEAD 마지막 커밋 스냅샷, 다음 커밋의 부모 커밋 현재 브랜치를 가리키는 포인터 (현재 브랜치 중 마지막 커밋을 가리킴) Index 다음에 커밋할 스냅샷 바로 다음에 커밋할 것들 워킹 디렉토리 샌드박스 위 두가지와 차별점은, 사람이 알아보기 쉽도록 실제 파일로 존재하는 곳 2) 버전 id로 되돌리기 git reset --hard "버전 id" 2. commit 수정 1) 커밋을 했는데 Stage하는 것을 깜빡하고 빠트린 파일("forgotten_file")이 있어서, 다시 한 파일만 커밋으로 하고싶은 경우 --amend키워드 사용 (첫 번째 ..
1. 버전 생성 다른 사람이 봤을 때 누가 작업했는지 파악에 용이 (한 번, 다음과 같이 실행 - 이후에는 지속) git config --global user.name "자신의 닉네임" git config --global user.email "자신의 이메일" 2. commit msg - 왜 해당 파일이 변경되었는지 작성하는 것 1) 변경사항 작성 git add f1.txt // commit 대기하기 위해 가는 곳(stage)에 추가 git commit // stage에 있는 파일들을 commit 2) insert i 입력 -> msg작성("version 1.0") 3) 저장 esc -> :wq 3. 버전 생성 확인 1) 기본적인 log cmd git log 2) log 명령어의 옵션 (1) 로그에서 출력..
1. GIT을 쓰는 이유 - Version Control System (변경 사항을 관리) ex) CVS, SVN, GIT GIT은 복잡하지만, 더욱 복잡한 코드를 관리할 때 git을 활용한다면 복잡함을 낮출 수 있는 이점 2. 작업 폴더 지정 1) .git 생성 git init 2) 확인 ls -al 3) vim vim f1.txt tap the ESC key, :wq 3. 프로젝트 상태 확인 1) f1.txt파일을 stage로 올리기 git add f1.txt 2) 프로젝트 상태 확인 - midified, new, 등의 상태 git status * 참고 : opentutorials.org/course/2708/15202
1. hitTest(_:with:), point(inside:with:) - 이벤트 발생한 뷰 탐색 : Pre-Order Depth First Traversal Algorithm 사용 (UIWindow부터 시작하며, 최근에 추가된 view먼저 탐색) - UIWindow를 First Responder라고함(탐색의 시작점이 UIWindow이므로) - 이벤트가 발생한 뷰를 찾는 것 self.view.addSubview(viewA) self.view.addSubview(viewB) self.view.addSubview(viewC) 1) 뷰의 최상위인 UIWindow가 hitTest(_:with:)호출 -> point(inside:with)로 터치 이벤트가 발생한 곳이 UIWindow내부인지 체크 -> true ..
1. Prefixing and concatenating - Observable끼리 합치는 것 1) startWith(value) - 기존 리스트에 첫 번째에 추가 example(of: "startWith") { // 1 let numbers = Observable.of(2, 3, 4) // 2 let observable = numbers.startWith(1) _ = observable.subscribe(onNext: { value in print(value) }) } 2) concat([]) example(of: "Observable.concat") { // 1 let first = Observable.of(1, 2, 3) let second = Observable.of(4, 5, 6) // 2 let..
가장 중요한 차이 : frame은 자기자신의 view를 이동, bouds는 subview들을 반대방향으로 이동 1. frame The frame rectangle, which describes the view’s location and size in its superview’s coordinate system. 즉, super view를 기준으로 해당 뷰의 크기나 위치를 표현하는 것 - size는 view를 감싸는 크기를 정의(회전시, view의 크기는 동일할 것이지만 size는 커짐) ex) let vc = UIViewController() vc.view.backgroundColor = .darkGray let view1 = UIView() view1.backgroundColor = .green vie..
1. URL API REQ 1) map을 이용하여 원소에 접근하여 최종적으로 URLRequest획득 // viewDidLoad().swoft DispatchQueue.global(qos: .default).async { [weak self] in let response = Observable.from([repo]) .map { urlString -> URL in return URL(string: "https://api.github.com/repos/\(urlString)/events")! }.map { url -> URLRequest in return URLRequest(url: url) } } 2) flatMap을 이용하여 새로운 Observable생성 *map이 아닌 flatMap을 사용하는 이유 -..