일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- scroll indicator
- 뷰컨
- 스토리보드
- 스크롤 인디케이터
- 레이아웃 사이클
- 이니셜라이저
- IOS
- 깃헙
- 우아한 앱종료
- 런치 스크린
- FeedbackGenerator
- 알뜰폰
- viewDidDisappear
- viewcontroller
- 아이폰
- git
- exit()
- loadView
- refreshControl
- indicator style
- viewWillDisappear
- do try catch
- without Storyboard
- swift haptic
- viewDidAppear
- 스위프트
- graceful termination
- 클로저
- 세븐모바일
- SWIFT
- Today
- Total
목록2021/11 (7)
예거's Bicycle for the mind
마지막 catch 의 역할 iOS 앱 개발을 하다보면, 발생 가능한 에러를 정의하는 열거형과 에러를 발생시킬 가능성이 있는 메서드를 만들게 됩니다. 에러를 던질 수 있는(throws) 메서드는 호출부에서 do-try-catch 문으로 처리해줄 수 있는데요, 이때 직접 정의한 에러 케이스를 전부 다루더라도, exhaustive 하지 않다는 컴파일 에러가 뜨는 경우가 있습니다. exhaustive 는 "하나도 빠뜨리는 것 없이 철저한" 이라는 뜻의 형용사인데요. 스위프트에서 switch 문을 쓰다 보면, 자주 보실 수 있는 에러죠. 위의 예시 코드처럼, do-try-catch 문에서 모든 에러 타입을 catch 로 붙잡아주더라도, 마지막에 매치되는 에러가 없는 catch 절이 필요한데요. 마지막 catch ..
아이폰의 장점은 무엇일까요? 아이폰은 왜 사용할까요? 많은 사람들은 애플의 생태계, 연결성, 그리고 UX 를 꼽습니다. UX 는 User Experience, 즉 사용자의 경험이라는, 굉장히 추상적인 가치입니다. 이렇게 추상적인 사용자 경험을 끌어올리는 방법은 여러 가지가 있겠지만 제가 아이폰을 처음 구입했을 때 가장 놀라웠던 점이 바로 햅틱 피드백이었거든요. 햅틱이라고 하면, '연아 햅틱' 을 떠올리시는 분도 있을 것 같습니다. (제가 그랬거든요.) 햅틱이라는 말이 어려우면, '진동'이라고 하면 이해가 쉽습니다. 햅틱(Haptic)이 뭘까? 위키백과에서 확인한 햅틱의 사전적 정의는 다음과 같습니다. 햅틱(haptic)은 사용자에게 힘, 진동, 모션을 적용함으로써 터치의 느낌을 구현하는 기술 그리고 이 ..
[ tracking connection ] -u 옵션은 --set-upstream 의 줄임말. tracking connection 을 설정하는 옵션입니다. 이게 설정됐을 때, Remote 레포의 브랜치를 Local 레포 브랜치의 업스트림(Upstream) 브랜치 라고 부릅니다. -u 옵션을 통해 tracking connection 을 설정하면 git push/pull 과 같이 간단한 명령어로 자동으로 Remote 레포와 정보를 교환할 수 있습니다. [ git ] git add . -> working directory 내의 수정사항이 있는 모든 파일들을 staging area 에 올림 git add [디렉토리명 or 파일 이름] -> 수정사항이 있는 해당 디렉토리 또는 특정 파일을 staging area ..
화면이 메모리에 처음 올라가고(로딩), 사용자에게 시각적으로 보여지고, 그리고 다음 화면을 위해 자리를 양보하며 사라지고, 메모리에서 아예 해제되기도 하는 일련의 과정을 UIViewController Life Cycle 이라고 부릅니다. 풀네임을 자세히 보면, 그냥 ViewController 가 아니라 UIViewController 인 것을 확인할 수 있는데 그 이유는 생명주기의 모든 메서드는 애플이 제공하는 UIKit 내의 UIViewController 라는 클래스 안에 이미 정의가 되어있기 때문입니다. 우리는 UIViewController 클래스를 상속받은 뷰컨에서, 생명주기 메서드를 override 한 뒤에 사용하면 됩니다. 다시, UIViewController 클래스의 정의부 코드를 펼쳐놓고 살펴..
1️⃣ 혹시 레포에 .gitignore 파일이 없다면? 깃헙에서 레포를 처음 만들 때 "Add .gitignore" 에 체크하고, template 로 Swift 를 선택했다면 문제가 없다. 아래 캡처를 보면, 기본적으로 만들어지는 .gitignore 파일 내부에 "xcuserdata/" 가 포함되어 있기 때문이다. 하지만 혹시나, 깃헙 레포를 만들 때 .gitignore 를 빼먹었다면? 🤔 그래서 UserInterfaceState.xcuserstate 파일 같이 뭔지 모를 파일이 자꾸 터미널에서 Tracking 따라다니며 괴롭힌다면...? https://www.toptal.com/developers/gitignore gitignore.io Create useful .gitignore files for y..
직전 글에서 UIView 를 다뤘으니, 이번 글에선 UIViewController 의 이니셜라이저에 대해 공부해보려고 합니다. UIViewController 클래스가 가진 2개의 이니셜라이저에 대해 알아보자 애플이 만들어둔 UIKit 내의 UIViewController 클래스 정의부에서 이니셜라이저와 생명주기 관련 메서드만 요약해봤어요. open class UIViewController: UIResponder, NSCoding, UIAppearanceContainer, UITraitEnvironment, UIContentContainer, UIFocusEnvironment { public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle..
앱은 하나 이상의 화면으로 이루어져 있습니다. 화면에서 다른 화면으로 이동할 수 있고, 또 되돌아올 수도 있어요. View controllers are the foundation of your app’s internal structure. Every app has at least one view controller, and most apps have several. 앱의 모든 화면은 각자의 ViewController(이하 "뷰컨"), 그리고 생명주기(Life Cycle)를 갖습니다. 화면이 메모리에 처음 올라가고(로딩), 사용자에게 시각적으로 보여지고, 그리고 다음 화면을 위해 자리를 양보하며 사라지고, 메모리에서 아예 해제되기도 하는 일련의 과정을 UIViewController Life Cycle 이라..