ios(22)
-
NSLock
0. 개발자 문서 확인 먼저 알아보기 전에 NSLock에 관한 설명을 애플의 개발자 문서에서 먼저 찾아보았다. https://developer.apple.com/documentation/foundation/nslock An object that coordinates the operation of multiple threads of execution within the same application. “동일한 어플리케이션 내에서 여러 스레드를 조정하는 객체” 라고 나와 있었다. 1. Thread-Safe를 지키는 방법 Re-entrancy 어떤 함수가 한 스레드에 의해 호출되어 실행 중일 때, 다른 스레드에서 함수가 호출되더라도 올바르게 주어져야함 Thread-local storage 공유 자원을 줄여 각..
2022.05.25 -
defer
Swift를 사용하면서 거의 잘 활용하진 않았지만, 꽤나 흥미롭게 다가와 이 문법을 정리하게 되었다. 0. defer란 무엇인가? 현재 스코프를 벗어날 경우 가장 마지막에 실행이 되는 구문이다. 처음 보면 이해가 잘 가지 않겠지만 예시를 이해하다 보면 생각보다 금방 이해할 수 있다. 1. defer 활용해보기 위와 같이 구성을 한 후 결과를 출력해보았다. 그랬더니 b, a, c 순서대로 출력이 되는 것을 확인 할 수 있었다. 간단하게 설명하자면 defer는 함수의 가장 마지막에 실행이 된다는 것을 보장하는 것이다. 1-1. defer 여러개 쓰기 그렇다면 defer를 여러개로 쓰게 된다면 어떻게 될까? 이렇게 defer를 여러개 쓰게 된다면 2, 1 순서로 출력된다. defer는 스택의 형식으로 사용되며..
2022.05.24 -
CADisplayLink
0. 개발자 문서 확인 iOS에서 뷰 생성과 애니메이션을 공부하던 중 CADisplayLink라는 것을 알게 되었다. 간단히 살펴본 것으로는 화면이 업데이트될 때마다 호출되는 객체라고 적혀있었다. 그래서! 이런 것은 또 못 참고 지나가기에 직접 실험을 진행해보고 싶었다. 일단 제일 먼저 확인할 애플 개발자 문서...! https://developer.apple.com/documentation/quartzcore/cadisplaylink 1. 간단 프레임률 측정 import UIKit final class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() createDisplayLink() // Do an..
2022.05.23 -
UI작업이 Main Thread에서 이뤄져야 하는 이유
iOS에서 개발을 진행하다 보면, UI 업데이트와 관련된 모든 작업은 main thread에서 작업을 해야 한다는 걸 많이 마주치게 될 것이다. 항상 이에 관한 정확한 이유를 모르고 넘겼지만 이번 기회에 이것을 한번 자세히 정리해보려 한다. 먼저 가장 많이 나타날 개념인 Thread Safe에 대해서 알아보겠다. Thread Safe란? 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 “동시에” 접근이 이루어져도 프로그램의 실행에 문제가 없음을 의미한다. UIKit은 기본적으로 Thread Safe하지 않다. UIKit과 같은 매우 큰 프레임워크에서의 모든 속성들을 Thread Safe 하게 설계하는 것은 엄청 비현실적이기에 Serial Queue에서 처리함으로써 ..
2022.05.20 -
CGRect, CGSize, CGPoint에 대하여
최근 UI의 작동방식에 관심이 많아져 다시 기초부터 공부하게 되었습니다. PinLayout과 FlexLayout 같은 외부 서드파티 라이브러리를 활용한 UI에 관심을 가지고 찾아보고 있었는데, 확실히 기존에 사용하던 오토 레이아웃과는 다른 개념이었어요... 이것도 기회가 된다면 나중에 한번 정리를 해보도록 할게요! 로딩 속도가 어마 무시하게 빠른 녀석들입니다 후들후들... https://github.com/layoutBox/PinLayout GitHub - layoutBox/PinLayout: Fast Swift Views layouting without auto layout. No magic, pure code, full control and blazing fast Fast Swift Views lay..
2022.04.28 -
iOS 앱 v1.0.2 업데이트 - 2021.12.10
UPDATE) 일기 앱 영어 버전 추가 기존 일기 앱은 한국어로 제작되었다. 그러나 조금 더 다양한 국가의 사람들이 우리 일기 앱을 사용할 수 있었으면 좋겠다고 생각했고, 전 세계에 보편적으로 사용되는 언어인 영어 버전을 업데이트하기로 결정했다. 일본어, 중국어도 서비스하고 싶었지만 업데이트 내역을 적기가 어려웠다. 일단 영어를 먼저 서비스하고, 앞으로 언어들을 추가할 계획이다. 기존 언어들을 영어로 바꾸고, NSLocalizedString을 이용해 한국어 번역을 진행하였다. 앱 용량이 크지 않았기 때문에 단순 번역하는 작업은 크게 오래걸리지 않았다.
2022.04.26