접근제어자
·
🍎 iOS/Swift
open모듈 외부에서 접근 가능, 상속 및 오버라이딩 허용프레임워크 일부를 사용자에게 공개할때 사용 public모듈 외부에서 접근 가능, 상속과 오버라이딩 제한주로 라이브러리나 프레임워크의 일부 기능을 공개할 때 사용 internal모듈 내에서만 접근 가능, 앱의 대부분의 코드에서 기본적으로 사용 fileprivate같은 파일 내에서만 접근 가능, 파일 단위로 캡슐화를 적용하고자 할 때 유용 private해당 선언이 포함된 스코프(클래스, 구조체 등) 내에서만 접근 가능가장 강력한 제한으로 민감한 데이터나 내부 구현사항을 보호할 때 사용
Lazy와 weak을 함께 사용할 수 없는 이유
·
🍎 iOS/Swift
Lazy 속성의 특징 lazy 속성은 처음으로 접근할 때 초기화된다.객체가 생성된 이후에 값을 설정할 수 있어, 초기화 시점에서 특정 값이 준비되지 않은 경우에 유용하다.lazy 속성은 인스턴스가 메모리에 확실히 존재하는 동안 유지되며, 그 인스턴스가 필요할 때 메모리에서 초기화된다. Weak 속성의 특징weak 속성은 약한 참조를 가리킨다.약한 참조는 메모리 순환 참조를 피하기 위해 사용되며, 참조하는 객체가 메모리에서 해제되면 nil로 설정된다.약한 참조는 항상 Optional 타입이어야 하며, 가리키는 객체의 수명이 다하면 자동으로 해제된다. 호환되지 않는 이유lazy 속성은 초기화 시점을 보장해야 하는데, weak 속성은 언제든지 nil이 될 수 있는 특성을 갖고 있다.따라서 참조를 지속할 수 없..
UI를 메인스레드에서 구현해야하는 이유
·
🍎 iOS/Swift
UI는 왜 메인스레드에서 구현해야할까? UIKit의 메인 스레드 설계 원칙UIKit은 UI작업을 메인 스레드에서 수행하도록 설계되어있다.이것을 따르지 않으면 UI가 비동기적으로 백그라운드 스레드에서 업데이트 되며, 예상치 못한 충돌이나 렌더링에 실패할 수 있다. 스레드 안정성UIKit의 구성 요소는 대부분 Thread-safe하게 설계되지 않았다.여러 스레드에서 UI를 동시에 수정하려고하면 Race condition이나 불안정성이 발생하여 앱이 불규칙하게 작동할 수 있다.메인 스레드를 사용함으로써 이런 충돌을 예방할 수있다. Race Condition?2개 이상의 스레드나 프로세스가 공유자원에 동시에 접근하고 수정할 때 발생하는 문제예) 은행 거래 시스템에서 여러 사용자가 동시에 같은 계좌에서 돈을 인출..
JerryiOS
Jerry