[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🍎 Apple 97

[Swift] Dynamic Dispatch 줄이기

Dispatch? Dispatch : 어떤 메서드를 호출할 것인가를 결정하여 실행하는 과정 Static Dispatch : 컴파일 시점에서 어떤 메소드가 사용될지 명확히 결정되는 것 Dynamic Dispatch : 런타임 시점에 어떤 메소드가 실행될지 결정되는 것, Swift에서는 class마다 vtable이라는 것을 가지고 있어서 이를 참조하면서 함수가 호출되기 때문에 이에 따른 overhead가 발생하게 된다. 즉 Dynamic Dispatch를 하면 성능의 하락이 있을 수 있다. 따라서 이를 최대한 줄이는 것이 성능상 도움이 된다. Swift에서의 Dispatch Swift의 struct와 class 중 struct를 먼저 생각해보자. struct는 값 타입이라 한 곳에서만 존재하고 상속도 없다...

🍎 Apple/Swift 2021.12.16

[UIKit] Frame vs Bounds

개인적인 학습 정리를 위한 글입니다. 🧐 CGPoint : 위치를 표현하기 위한 구조체로 x좌표와 y좌표의 값을 CGFloat으로 가진다. CGSize : 크기를 표현하기 위한 구조체로 너비와 높이 값을 CGFloat으로 가진다. CGRect : 사각형의 위치(origin)와 크기(size)를 포함하는 구조체로, origin과 size를 각각 CGPoint와 CGSize로 가진다. UIView는 기본적으로 frame과 bounds값을 모두 가지는데, 이들은 둘 다 CGRect이다. 둘 모두 좌표와 크기를 가진다는 의미이다. 둘의 차이를 검색해서 찾아보면 Frame : SuperView의 좌표 시스템에서의 위치와 크기 Bounds : 자신만의 좌표 시스템에서의 위치와 크기 정도로 정의되는 경우가 많다. 이..

🍎 Apple/UIKit 2021.11.10

[UIKit] Diffable Datasource

기존의 DataSource와 UI는 각각 시간에 따라 변경되는 자신만의 버전(truth)을 가지고 있는데, 이것이 맞지 않으면 에러가 발생한다. reloadData를 수행하기 전까지는 중앙화된 하나의 버전(truth)가 존재하지 않아 에러가 발생하기 쉽다. reloadData를 수행하더라도 애니메이션없이 화면을 갱신하게 되기 때문에 사용자 경험을 저하시킬 수 있다. Diffable Datasource 개념 그에 따라 Apple에서 도입한 것이 Differble DataSource이다. performBatchUpdates()같은 복잡한 메소드를 사용하지 않고, apply()라는 하나의 메소드로 관리하게 된다. Snapshot: UI의 버전(truth)를 저장하는 개념이다. 각 section과 item에 대..

🍎 Apple/UIKit 2021.10.20

M1 맥북 CocoaPods pod install error 해결

m1 맥북에서 CocoaPods를 설치하고 사용하다 에러를 마주했다. 설치는 잘되었고, pod init까지도 문제없었다. 하지만 pod install을 수행해 본격적으로 패키지를 다운받으려하니 에러가 출력되며 패키지설치가 되지 않았다. 'Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.' 와 같은 메세지가 출력되면서 설치가 완료되는 것이 정상적인 수행인데, 그것이 이루어지지 않았다. 아무래도 m1이 arm 기반 프로세서이기 때문에 다르게 동작하는 부분이 있는 것 같다. 해결방법 터미널을 Rosetta를 사용하여 열고,sudo gem install ffi를 입력해 ffi를 설치 후 폴더로 이..

🍎 Apple/Error 2021.10.03

[Swift] Codable Protocol

Codable 자신을 특정표현으로 변환하거나 변환될 수 있는 타입 쉽게말해 특정표현으로 인코딩할 수 있고, 특정표현으로부터 디코딩될 수 있는 타입이라는 것이다. typealias Codable = Decodable & Encodable 실제로 Codable은 위와 같이 Decodable과 Encodable가 함께 존재하는 형태로 이루어져 있다. 여기서 특정표현은 여러가지가 있을 수 있지만, 주로 다루게 되는 것은 JSON이다. Class, Enum, Struct에서 모두 사용이 가능하다. Codable 프로토콜을 채택한 구조체로 Encoding, Decoding을 해보며 이해해보자. Encoding struct DataModel : Codable { var title : String var number ..

🍎 Apple/Swift 2021.09.02

[Xcode] 다크모드 Color Set 생성

다크모드 Color Set 생성 iOS 프로젝트에서 Assets.xcassets 클릭 후 화면 왼쪽 아래의 + 버튼 클릭 New Color Set을 눌러 새로운 Color Set을 생성할 수 있다. 옵션에서 Appearances를 Any, Light, Dark로 바꾸면 각 모드에 따른 색을 추가할 수 있다. 이제 ColorSet 생성이 완료되었다. Name에서 원하는 이름을 주고 프로젝트에서 활용하면 된다. cf. 이미지도 마찬가지로 Assets.xcassets에서 이미지를 만들고 Apperance 옵션을 수정한 다음, 다크모드에서 열릴 이미지를 첨부하면 처리가능

🍎 Apple/Xcode 2021.08.27

[Swift] 기초 문법 정리

iOS 개발을 위해 Swift 문법을 공부하다보니, 낯선 개념들이 많이 보였습니다. 이들을 어느정도 정리해야할 필요성을 느껴 정리해둡니다. 참고1 : iOS 프로그래밍을 위한 스위프트 기초(https://www.boostcourse.org/mo122/joinLectures/38564) 참고2 : 애플 개발자 문서(https://developer.apple.com/documentation) 참고3 : Swift 5.5 번역(https://xho95.github.io/swift/programming/language/grammar/2017/02/28/The-Swift-Programming-Language.html) cf. 타언어와 유사하고 기초적인 문법들은 정리하지 않았습니다. optional nil값과 op..

🍎 Apple/Swift 2021.07.18