본문 바로가기

전체 글533

[iOS] App launch Sequence Apple Developer Documentation developer.apple.com App launch Sequence 앱을 런치할 때 시스템에 의해 복잡한 여러 단계의 시퀀스가 실행이 된다. 런치 시퀀스동안, UIKit은 app delegate에 있는 메소드들을 호출해서 app이 사용자 상호작용에 대비하고, 앱의 요구사항에 맞는 여러 작업들을 실행할 수 있게 한다. user나 시스템이 앱을 실행 시, 시스템은 앱을 prewarm시킨다. iOS15 이후 버전에서는, 시스템은 디바이스 상태에 따라서 앱을 prewarm 시킬 수 있는데, 앱이 사용가능한 상태가 되기 전까지 사용자가 기다리는 시간을 최소화하기 위해 nonrunning 애플리케이션 프로세스들을 실행한다. 시스템이 Xcode에서 제공하는 '.. 2022. 6. 6.
[Swift] Class vs Struct [Swift] Class와 Struct의 차이점? 안녕하세요 Pingu입니다.🐧 오늘은 iOS 개발에 쓰이는 Swift 언어에서 Class, Struct의 차이점이라는 주제를 가지고 글을 써보려고 합니다. iOS 개발자로 면접을 준비하다 보면 Class, Struct의 차이점이라 icksw.tistory.com Class vs Struct class struct 타입 참조(Reference) 값(Value) ARC에서 메모리 관리 O X 변수 할당 시 메모리 주소만 복사 (한 변수의 값을 변경 시키면 모든 변수가 변경) 새로운 변수에 할당 시 새로운 구조체 할당 (한 변수의 값을 변경시켜도 다른 변수에 영향없음) 메모리 영역 Heap Stack thread-safe X O 상속 사용 O X deinit .. 2022. 6. 2.
[iOS] CFGetRetainCount Apple Developer Documentation developer.apple.com CFGetRetainCount Core Foundation Object의 reference count를 반환한다. memory leak이 있는 부분을 디버깅할 때 사용하면 유용하다. 예제 class Test { deinit { print("deinit \(CFGetRetainCount(self))") } var closure: (() -> Void)? = { } func doing() { defer { print("doing defer \(CFGetRetainCount(self))") } print("doing start \(CFGetRetainCount(self))") closure = { self } } } va.. 2022. 6. 2.
[Swift] deinit에서 self에 접근해도 되는가? Swift - self in deinit method Is it good practice to use self in swift deinit method?. In objective C we avoid use of self in init and dealloc method. Is same applied for swift? stackoverflow.com deinit에서 self에 접근해도 되는가? 결론적으로 해도 된다. deinit의 역할 자체가 메모리 해제 전 마지막으로 self에 접근할 수 있도록 하는 것이기 때문에 접근하는 것은 문제될 것이 없다. 단, deinit에서 self를 다른 객체에 저장하는 행위는 해선 안된다. 크래시 발생 deinit에서 self를 다른 객체에 저장할 경우 class Sing.. 2022. 6. 2.