일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 부트캠프
- delegation
- SWIFTUI
- Info.plist
- Codegen
- Navigation
- NotificationCenter
- View Life Cycle
- IOS
- Failed to register bundle identifier
- @available
- roundingMode
- Structures and Classes
- Modality
- 아이폰
- 독후감
- 독서후기
- NumberFormatter
- Mock
- 스타트업주니어로살아남기
- xcode
- 책후기
- UIResponder
- mvvm
- 야곰아카데미
- human interface guidelines
- 스위프트
- SWIFT
- contentInset
- viewcontroller
- Today
- Total
목록Software Engineering (137)
호댕의 iOS 개발
JSON은 무엇일까? JSON은 Javascript Object Notation의 줄인 말이다. 그럼 분명 나는 Swift로 개발을 공부하고 있는데 왜 Javascript에서 객체를 표기하는 방법을 배워야 하는 것일까? 그 이유는 단순하다. 최근 JSON을 데이터를 전달하고 저장하는 대표적인 방법으로 사용하고 있기 때문이다. 컴퓨터의 데이터는 전부 0과 1로 구성이 되어 있는데, 컴퓨터 간에 데이터를 전달하려면 서로 0과 1을 해석하는 방식이 동일해야 한다. 그래서 HTML과 유사한 XML이라는 방식을 사용하기도 했다. 하지만 데이터를 주고 받을 때 사람도 보다 읽기 쉽도록 하길 원했고, 현재는 사람도 읽기 편한 JSON을 대부분 사용하게 되었다. JSON 데이터의 표기 방법 {} : 객체 (딕셔너리) ..

화면을 전환하려면 Storyboard에서 ctrl 키를 누르고 연결만 시켜주면 된다. 이후 Action segue를 원하는 방식으로 설정해주면된다. 예를 들어 버튼을 눌렀을 때 다음 화면으로 넘어가고 싶다면 버튼에서 ctrl 키를 누른 상태로 넘어가고 싶은 화면에 드래그해주면 되는 것이다. 하지만 스토리보드는 협업을 할 때 버전에 영향을 많이 받고, 동시에 하나의 스토리보드를 작업한다면 꼬여버리는 문제가 있다고 알고 있다. 따라서 현업에선 각자 작업을 하는 스토리보드를 따로 두고 있다고 들었다. 여기서 문제가 발생한다... 스토리보드 파일을 따로 두면 기존에 segue를 직접 연결시켜주는 방식은 사용할 수 없는 것이다... 그래서 이 땐 코드로 화면을 전환해줄 필요가 있다! 이전에 버튼을 예로 들었으니 ..

방학에 푹 쉬고 다시 시작하는 첫 주이다. 방학 때 공부를 많이 못한 것은 아쉽기도 하지만 다시 체력을 보충하고 다시 공부에 전념할 수 있도록 마인드 셋팅을 할 수 있었다는 것에 대해선 만족한다. 이번 주는 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를 기준으로..