본문 바로가기

iOS

(74)
Delegate? DatsSource? UIKit를 다루다보면 많이 접하는 개념이 Delegate와 DataSource이다. (예를 들면, UITableViewDeleate / UITableViewDataSource) 그러면, 모든 UIKit가 Delegate와 DataSource를 갖고 있을까? ... 그렇지는 않다. 예를 들어서 UITableView의 경우 둘 다를 채택할 수 있지만, UITextView의 경우는 Delegate만 채택할 수 있다. 그렇다면 Delegate와 DataSource의 차이는 무엇일까? 이름에서 어느정도 유추할 수 있다. Delegate의 경우, 대리자(누군가가 해야 할 일을 대신 해주는 것) .. 라는 의미가 있기 때문에 특정 역할을 담당, 즉 어떠한 기능을 담당하고 있다고 볼 수 있다. 그리고 DataSour..
UIViewPropertyAnimator UI의 애니메이션을 적용하기 위해서 UIView.animate를 많이 사용합니다. 그러나, 해당 메서드는 곧 deprecated 될 가능성이 높습니다. 💬 Use of these methods is discouraged. Use the UIViewPropertyAnimator class to perform animations instead. 위와 같이 공식 문서에서도 UIViewPropertyAnimator 사용을 권장하고 있습니다. 해당 프로토콜은 iOS 10이상부터 사용 가능한 API 입니다. (따라서, 프로젝트 타겟이 10이상인 프로젝트에서 애니메이션을 적용한다면, UIViewPropertyAnimator를 사용하는 것을 권장합니다.) 자세한 설명은 공식 문서를 통해서 살펴볼 수 있습니다. 🤔 UI..
Swift Package Manager Update 간단하게 SPM에 대해서 말씀 드리자면, 다음과 같습니다. ⬇️ SPM(Swift Package Manager)은 종속성 관리를 위한 공식 도구입니다. Cocoapods, Carthage인 3rd Party 툴이 아닌 1st Party 입니다. 그래서 앞으로는 SwiftPM을 적용하는 것이 장기적으로 좋습니다. 이번 글은 프로젝트 진행 중 업데이트를 해야 하는 상황이 있었고, 이에 어떻게 해야 하는지 정리한 글입니다. 해당 프로젝트 내에서 디자인 시스템을 따로 SPM으로 만들어서 사용하고 있었는데 추가로 업데이트 된 것들이 있어서 SPM 업데이트를 해야 했었습니다. Cocoapods의 경우, 터미널을 통해서 Podfile에 접근하여 Version을 업데이트 할 수 있습니다. 보통, pod install을..
개발자 계정 팀 인증서 등록 애플 개발자 계정을 회사가 아닌 개인이 구입하여 사용하는 경우, 다른 팀원들과 공유를 해야 Team에 설정할 수 있습니다. (이 과정이 생각보다 쉽지 않아서, 주로 로그인 계정을 공유하면서 개발자 계정 자체(이메일, 비밀번호)를 공유하기도 합니다. 그러나 이 방법은 보안에 취약한 방법이기 때문에 권장하지 않습니다.) 이 글에서는 개발자 계정을 여러 팀원이 공유하는 방법에 대해 작성해보도록 하겠습니다. 사전적으로 필요한 작업은 개발자 계정이 있어야 합니다. 개발자 계정 인증서를 세팅 하기 위해서 개발자 계정 소유자와 팀원의 몇가지 단계가 필요합니다. 먼저 개발자 계정 소유자의 작업부터 서술하겠습니다. 계정 소유자 앱 등록 개발자 계정을 갖고 있는 (= 매년 129,000원을 지불하는) 사람은 Apple D..
Apple Developer Pending 애플 개발자 계정을 구매하면 바로 개발자 계정이 활성화가 될 것이라고 생각했었는데, 아니었습니다. 😇 카드사에서 돈도 나가고 결제 내역도, 영수증도 나왔는데 왜 ??? 라고 생각이 되어서 혹시 오류인가? 싶어 구글링을 해보았더니, 아래의 사이트에서 문의를 할 수 있다고 찾았습니다. https://developer.apple.com/contact 위의 사이트를 클릭해서 들어가게 되면 아래와 같이 멤버십 및 계정 탭을 통해 문의를 드릴 수 있습니다. ⬇️ 그러면 아래와 같이 계정 접근과 관련되어서 카테고리를 설정할 수 있고, 해당 카테고리를 탭하면 바로 전화/메일을 통해서 문의를 드릴 수 있습니다. ⬇️ 저 같은 경우, 결제가 되었음에도 불구하고 개발자 계정이 활성화 되지 않은 것이 오류라고 생각했는데, 실..
Autolayout Animation AutoLayout을 이용한, AutoLayout에 제약 조건이 걸려 있을 때 애니메이션을 어떻게 줄 수 있을지 알아보도록 하겠습니다. 예를 들어서, 화면의 X/Y의 center에 크기가 50인 사각형이 있다고 가정해보겠습니다. (제약 조건은 위에서 말한 조건이 될 것입니다.) 그리고 해당 view에 대해서 크기가 증가하는 애니메이션을 구현하겠습니다. @IBOutlet weak var view: UIView! @IBOutlet weak var widthConstraint: NSLayoutConstraint! @IBOutlet weak var heightConstraint: NSLayoutConstraint! @IBAction func animate(_ sender: Any) { UIView.animate..
iOS-Concurrency 해당 글은 인프런-엘런 님의 강의를 듣고 정리한 글입니다. GCD에 들어가기 전에 관련 개념을 정리하고 들어가겠습니다. ✅ 쓰레드란 평소 PC 사양을 표현할 때 많이 사용하는 개념입니다. 4 코어 8 스레드, 8 코어 16 스레드 등..으로 많이 사용합니다. 이런 예시를 통해서 짐작할 수 있는 것처럼, 스레드는 컴퓨터의 일을 처리하는 부분입니다. ✔️ 스레드에게 일을 잘 분배하지 않았거나, ✔️ 쓰레드가 일을 잘 처리하지 못하고 있다면 >> 버벅거리는 현상이 나타납니다. 🤔 그렇다면 왜 버벅이는 현상이 나타날까요? 예를 들어 6 코어라고 가정을 해보겠습니다. 6 코어라면 최소한 12 스레드가 있을 것입니다. 앞서 스레드는 일하는 부분이라고 했습니다. 12 스레드의 의미는 간단하게 일하는 부분이 총 12개..
SwiftGen SwiftGen 프로젝트 리소스를 Swift 코드로 자동 생성하여 안전한 타입으로 사용 가능 SwiftGen 깃허브 SwiftGen 라이브러리는 프로젝트의 리소스(ex, 이미지, 폰트, 컬러, 다국어 문구 등)를 Swift 코드로 자동 생성해주는 도구입니다. 이 라이브러리를 사용하면, 리소스를 편하게 사용할 수 있고 리소스를 변경했을 때(또는, 없는 리소스를 참조하려고 할 때) 에러를 빠르게 찾을 수 있습니다. 라이브러리를 사용하지 않고 Xcode에서 이미지, 색상 등을 사용하려면 리소스 이름을 String으로 하여 사용해야 하는데, 오타 등의 에러는 발견하기 어렵기 때문에 쉽게 원인을 파악할 수 없습니다. 그러나 SwiftGen으로 생성된 코드로 리소스를 사용하면 프로젝트 내에 존재하는 리소스와 해당 ..