일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Info.plist
- NumberFormatter
- 책후기
- roundingMode
- @available
- mvvm
- Modality
- Failed to register bundle identifier
- viewcontroller
- Navigation
- 스타트업주니어로살아남기
- 아이폰
- 독서후기
- 스위프트
- NotificationCenter
- Codegen
- delegation
- SWIFTUI
- 부트캠프
- contentInset
- 야곰아카데미
- human interface guidelines
- xcode
- 독후감
- View Life Cycle
- UIResponder
- Structures and Classes
- IOS
- SWIFT
- Mock
- Today
- Total
목록전체 글 (145)
호댕의 iOS 개발

방학에 푹 쉬고 다시 시작하는 첫 주이다. 방학 때 공부를 많이 못한 것은 아쉽기도 하지만 다시 체력을 보충하고 다시 공부에 전념할 수 있도록 마인드 셋팅을 할 수 있었다는 것에 대해선 만족한다. 이번 주는 iOS 개발을 하면서 중요한 'TableView'에 대해 학습했다. 아직 어려운 부분이 많지만 팀원들과 함께 공부하며 TableView의 기본적인 메서드와 호출 순서에 대해 어느정도 감을 잡을 수 있었다. 스스로도 계속 적용해보려고 노력하면 익숙해지겠지...? 21.12.06 TableView dataSource -> 데이터를 전달 delegate -> 테이블 뷰가 수행하는 행동, 모습을 전달 didSelectRowAt 메서드를 통해 어떤 섹션에 어떤 로우에 이벤트를 받았는지 알 수 있다. 이벤트가 ..

이번 주는 NumberFormatter, ARC, App Life Cycle에 대해 중점적으로 배웠다. ARC ARC는 뭘 자동으로 해주는 것일까? 컴파일 타입에 retain을 통해 reference count가 올라가고 release를 통해 reference count가 내려가는 것에 대한 코드를 자동으로 넣어준다. 이를 통해 reference counting이 0이 되면 메모리에서 해제시킨다. (deinit을 호출한다) 그렇다면 ARC 이전에는 어떻게 메모리 관리를 해줬을까? MRC를 사용해서 직접 retain과 release 코드를 작성해주고 reference count를 올리고 내려줬다. 따라서 이 때는 참조 카운트를 개발자의 실수로 잘못 더해주거나 빼주는 경우도 있었다. ARC를 이해해야 하는 ..

NumberFormatter를 보면 지정한 소수점에 맞춰 어떻게 올림, 버림, 반올림을 할 지 정할 수 있는 인스턴스 프로퍼티가 존재한다. 제목에도 나와있듯 roundingMode가 바로 그것이다. 여기서는 7가지 종류로 어떻게 소수점을 처리할 지 정할 수 있다. .up .down .ceiling .floor .halfUp .halfDown .halfEven 그렇다면 각각 어떤 식으로 소수점을 처리하는 것일까? .up Round away from zero. 0으로 부터 멀어지도록 소수점을 처리하게 된다. 즉 음수일 때는 작아지는 방향으로, 양수일 때는 커지는 방향으로 소수점을 처리한다. 만약 let numberFormatter = NumberFormatter() numberFormatter.maximum..

프로그래밍을 하고 프로젝트를 수행하며 나보다 잘하는 사람들을 숱하게 보게 된다. (가끔 자괴감이 들기도 한다) 하지만 야곰이 말씀하셨던 것처럼 다른 사람과 비교하지 말고 과거의 나와 비교하자! (물론 과거의 나보다 성장하지 않았다면 그것은 큰 문제이다) 불과 3~4개월 전만 해도 정말 Xcode를 어떻게 켜는지 조차 몰랐고 반복문 조건문도 전혀 몰랐었다. 아직 많이 부족하지만, 또 많이 성장한 만큼 할 수 있다는 생각으로 공부해나가자!! 학습한 내용 # nan (not a number) 프로젝트를 진행하며 처음에는 0으로 나눌 경우에 대해 오류처리를 해주려고 했다. 하지만 Double에 nan이라는 타입 프로퍼티가 존재했다. nan은 모든 값과 같지도, 크지도, 작지도 않다. (심지어 자신도 포함해서 비..

왜 고차함수를 사용해야 할까? 디바이스의 성능이 향상되면서 기기의 성능이 좋아지면서 동시에 여러가지 일을 처리할 수 있게 됐다. 하지만 여기서도 문제가 발생한다. 하나의 객체에 동시에 여기저기서 접근하는 동시성 문제가 발생하게 되는 것이다. 이를 해결하기 위해선 2가지 방법이 존재한다. 동시에 접근하더라도 차례대로 접근할 수 있도록 제어를 한다. 객체를 불변의 상태로 만들어서 언제나 복사해도 무방한 형태로 복사해서 사용을 한다. 첫 번째 방법의 경우 연산이 너무 길어지는 단점이 존재한다. 따라서 성능 상으로 좋은 해결책은 아니라고 판단했다. 다음 해결책을 수행하기 위해선 객체 별로 프로퍼티(상태)를 갖고 있는 객체 지향 프로그래밍이 오히려 단점으로 작용한다. 따라서 이 경우를 위해 순수 함수를 사용하는 ..

이미 커밋을 하고 한~참 시간이 지났다가 중간에 딱 한 커밋이 카르마 규칙을 준수하고 있지 않은 것을 발견했다. 지금까지 바로 직전의 커밋이었으면 reset을 하고 다시 커밋을 했지만 이미 다른 커밋들이 쌓인 뒤라 reset을 할 수도 없었다. (찾아보니 이미 commit을 했다고 해도 push를 하지 않았다면 ammend 명령어를 사용하면 된다) git commit --amend 하지만 이 방법은 Push를 하지 않았을 때 사용할 수 있다. 🥲 하지만 나는 이미 Push를 해서 Github에 이미 올렸고 이미 많이 commit을 진행하여 이 방법은 사용할 수 없었다. 이때 사용할 수 있는 방법이 바로 rebase 이다. 먼저 git log를 해서 커밋 로그를 살펴보자. 그렇다면 지금 Head를 기준으로..

reverse()와 reversed() 메서드 모두 배열을 뒤집는 메서드들이다. 🤷🏻♂️ 그렇다면 이 둘은 어떤 차이가 있을까? # reverse 먼저 Apple Developer 문서를 살펴보자! reverse()에 대한 문서를 보면 이렇게 나와 있다. Reverses the elements of the collection in place. collection의 요소를 그 자리에서 뒤집는다는 것이다. 공식문서에선 reverse()의 시간 복잡도를 이렇게 말하고 있다. Complexity: O(n), where n is the number of elements in the collection. 그렇다면 왜 O(n)의 시간 복잡도를 갖는 것일까?? reverse() 가 어떻게 배열을 뒤집는지 그림을 보면..

야곰의 피가 되고 살이 되는 잔소리~ # 마스터가 목표가 아니다! 캠프를 진행하면서 마스터하는 것이 목표가 아니다. 뭘 모르는지, 뭘 깊게 공부할 지 알아가는 과정이다.즉, 어떤 방식으로 탐구하면 좋을지 알아가는 과정이 필요하다. (공부의 자세!) 먼저 관심있는 부분에 대해 어떻게 공부하면 좋을지 깊게 공부해보고, 다른 사람들이 공유한 것을 살펴보는 것도 좋다.(개발자 Conference나 Semina가 많은 이유) 모든 것을 익히지 못한다고 부담을 너무 갖진 말자. 다른 사람들이 공부한 것을 공유받는 것도 적극 활용하자! 학습한 내용 # 프로토콜 프로토콜은 타입이 갖출 기능들의 청사진이다. 즉, 하나의 기능 요구사항이다.(여기서 프로토콜은 상속한다고 표현하지 않고 '채택한다’라는 표현을 사용한다.) 그..