일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swift documentation
- ios
- UITextView
- 리펙터링
- Xcode
- uitableview
- rxswift
- Clean Code
- map
- swiftUI
- Protocol
- ribs
- Observable
- Refactoring
- collectionview
- SWIFT
- Human interface guide
- RxCocoa
- UICollectionView
- HIG
- 리팩토링
- 애니메이션
- 스위프트
- tableView
- combine
- clean architecture
- MVVM
- uiscrollview
- 클린 코드
- 리펙토링
- Today
- Total
목록분류 전체보기 (1644)
김종권의 iOS 앱 개발 알아가기
일급객체 함수는 일급 객체 일급 객체란 변수에 저장하거나 파라미터로 넘길 수 있는 속성 escaping이란 함수가 해당 함수 내부에서만 사용되지 않고 다른 곳으로 저장하거나 참조하거나 파라미터로 넘길 수 있는 의미(==현재 함수를 탈출) 함수에서의 escaping이란 함수 내부에서 사용해야할 것이 외부에서 참조되거나 파라미터로 넘겨지는 현상 함수라는 것은 파라미터(인수)또한 포함되는 개념 예제) 아래 두 가지 케이스 모두 @escaping을 쓰지 않으면 컴파일 오류 발생 함수의 escaping: 외부에서 저장하는 경우 : completion이라는 인수가 escaping되어, sampleFunc라는 함수는 escaping됨 class ViewController: UIViewController { overr..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sqlVm/btqSIYbf4n2/WF4EzdPUMrXj1QP0ya3eL1/img.png)
* xcconfig 사용 방법: ios-development.tistory.com/428 xcconfig방법은 .xcconfig파일을 별도로 swift문법과는 다르게 작성하는 번거로움이 있는 단점과 더욱 정밀하게 선언하여 관리할 수 있는 장점이 있지만, info.plist에 configuration을 가져와서 .swift파일에서 동작하도록 하는게 더욱 간편 코드에서 해당 Configuration(debug, alpha, beta, release) 확인 방법 Build Settings에서 User-Defined에 해당 빌드 configuration을 문자열 key값 정의 info.plist에 위에서 정의한 key값을 저장하도록 정의 info.plist에 정의한 key값을 가지고 코드에서 접근 Build s..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bI6CnF/btqSKL3MrU0/uEEwc4AVpkCT41bVV2Qb11/img.png)
정규 표현식 대표적인 표현식 표현식 의미 ^x x문자열로 시작 x$ x문자로 종료 .x 임의의 한 문자 + x문자로 끝남 x+ x문자가 한번 이상 반복 (x) x는 한 그룹 (x)(y) 각 그룹 (그룹에 순서대로 번호 부여) (?:x) x문자는 집합으로 관리되지 않음 x{n} x문자가 n번 반복 x{n,} x문자가 n번 이상 반복 x{n,m} x문자가 n번 이상 m번 이하로 반복 xyz? xy그리고 0개 또는 1개의 z포함 xyz* xy그리고 0개 이상의 z포함 xyz{2} xy그리고 2개의 z포함 x(yz)* x그리고 0개 이상의 yz포함 a(b|c)) a그리고 b 또는 c 포함 a[bc] a(b|c)와 동일 표현식2 표현식 의미 [xy] x와 y중 하나 문자 선택 [^xy] x및 y를 제외한 문자 [..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btuvZu/btqSxA9PQrd/MdPKBTE93oMpfvKI8iDxA1/img.png)
update cycle: 유저로부터 이벤트 핸들링 코드 수행 main run loop: view들을 배치(layout), 가시(display), 제약(constaint) Layout이란? View의 위치와 크기 LayoutSubviews View와 자식 View들의 위치와 크기를 재조정 레이아웃 업데이트 시 직접적인 호출 불가: 재귀적으로 모든 자식 뷰의 layoutSubviews까지 호출해야 하므로 부하가 큰 작업 직접적으로 호출을 지양하므로 간접적으로 호출할 수 있는 방법이 디폴트: view의 layout변화(resizing, subview추가, 스크롤, 회전) LyaoutSubviews를 명시적으로 호출하는 방법 setNeedsLayout(): 바로 올 update cycle에 view의 layou..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3I2fe/btqR6vAG1Pq/HRNsZkKxSXnf2sNdv1Wnr0/img.png)
원인: LaunchScreen을 info.plist에서 삭제하여 위와같은 버그 발생 info.plist에 LaunchScreen추가 다시 실행 -> 해결 완료
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wXC9J/btqRVqGqsTy/RYmrvoJ5IZNBFWE4VQknI1/img.png)
git remote 원격 저장소 등록 ("원격 저장소 이름"은 보통 origin 사용) git remote add {원격저장소 이름} {원격저장소 url}: 등록한 저장소 확인 git remote git push 저장소 브랜치에 푸시 git push { 원격 저장소명 } { 원격 브랜치명 } // git push origin develop 위 명령어를 git push로만 해도 동작 되게끔 등록 git push --set-upstream {원격 저장소 이름 .. origin} {로컬 브랜치 이름 .. master} 원격 저장소 파일 가져오기 핵심: clone은 로컬과 origin을 독립적으로 보고 pull은 종속적으로 보는 것 git clone: 단순 가져오는 기능 (로컬에서 작업하던 브랜치와 가져온 브랜..
switch문을 if, guard 문으로 바꾼 것 switch문은 "=" 앞에 타입(case)을 명시하지만, if case let, guard case let문은 "=" 앞에 값을 명시 enum 정의 enum Person { case name(String) case age(Int) } switch 문 switch person { case .name(let nameValue): print(nameValue) case .age(let ageValue): print(ageValue) } switch문 -> if case let // 앞에 case문 타입을 먼저 쓴 후 뒤에 값이 위치 if case let Person.name(nameValue) = person { print(nameValue) } switch..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ecnZ7j/btqRCV144Hd/tkzCj16y3XIkVHfjzARkbK/img.png)
sudo를 사용하지 말고 global설정을 통해 해결하는 방법 문제 상황 $ gem install bundler ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory. rbenv versions체크 $ rbenv versions * system (set by /Users/user/.rbenv/version) 2.3.8 global로 ruby버전을 세팅 $ rbenv global 2.3.8 $ rbenv versions system * 2.3.8 (set by /Users/user/.rbenv/version) 설치하면 성공..