본문 바로가기
728x90

분류 전체보기86

[UIKit] App Delegate와 Scene Delegate App DelegateApp 전체가 공유하는 행동들을 관리.app delegate는 App의 실질적인 root 객체라고 할 수 있다.UIApplication 객체와 함께 동작하여 시스템과의 상호작용을 관리AppDelegate가 처리하는 작업들App의 중심이 되는 데이터 구조 초기화Scene 설정/해제App 외부로부터 전달되는 알림에 대응 (ex. 메모리부족, 백그라운드 다운로드완료 등)타겟이 특정 scene/view/viewController가 아닌 App 자체인 이벤트에 대응런치 시점에 필요한 서비스 등록 (ex. Apple Push Notification 서비스)App 상태 복구(State Restoration) 관리앱의 생명주기Not Running : 실행되지 않았거나, 시스템에 의해 종료된 상태I.. 2024. 6. 5.
[Swift] Access Control (접근제한) Access Control다른 소스 파일 또는 모듈의 코드에서 코드 부분에 대한 엑세스를 제한코드의 구현 세부 정보를 숨기고 해당 코드에 엑세스하고 사용할 수 있는 기본 인터페이스를 지정 가능모듈과 소스파일 구분모듈: 배포 단위프레임워크 또는 응용프래그램을 import로 다른 모듈로 가져올 수 있는 성격소스파일: 단순히 소스코드 파일이므로 소스 파일에서 여러 유형에 대한 access control 정의가 가능Access levelopen모든 소스 파일에서 해당 level 접근 가능 + 모든 곳에서 서브클래싱 가능public모든 소스 파일에서 해당 level 접근 가능 + 같은 모듈 내에서만 서브클래싱 가능internal (외부 모듈에서 코드 확인 불가)같은 모듈 내에서만 접근 가능fileprivate (.. 2024. 5. 31.
[Swift] designated init 과 convenience init Designated init (지정 초기화)해당 클래스에 의해 선언된 모든 property를 모두 초기화하고 적절한 super class의 init을 호출하여 super class까지 init 프로세스를 진행initclass Person { let name: String let age: Int let birthDay: String init(name: String, age: Int, birthDay: String) { self.name = name self.age = age self.birthDay = birthDay }}Convenience init (편의 초기화)Designated init의 parameter중 일부를 기본값으로 설정하여 .. 2024. 5. 30.
[iOS] 왜 메인스레드에서만 UI 업데이트를 할까? 서론iOS개발을 하다보면 UI 업데이트 관련 로직은 main thread에서 작업을 해야한다는것을 알것이다. 비동기 작업을 하면서 UI업데이트 시, 당연스럽게 메인스레드에 작업을 지정하며 넘어갔다. 문뜩 왜 메인스레드에서만 UI 작업을 해야할까? 라는 의문이 들기 시작했다.메인스레드보다 백그라운드 스레드에서 하는게 더 좋지 않을까? 짚고 넘어가야할 개념 Thread-safe멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 “동시에” 접근이 이루어져도 프로그램의 실행에 문제가 없음을 의미한다.UIKit은 기본적으로 Thread Safe하지 않다. UIKit과 같은 매우 큰 프레임워크에서의 모든 속성들을 Thread-Safe 하게 설계하는 것은 엄청 비현실적이기에 Ser.. 2024. 5. 28.
[Swift] inout 파라미터 inout 파라미터는 무엇이고, 언제 사용할까?일반적인 Swift함수의 파라미터는 상수이다. 고로, 변경될 수 가 없다.그러나, inout파라미터를 사용하면 함수내에 직접 변수를 변경하겠다는 의미로 사용된다. inout 파라미터는 Swift에서 함수가 호출될 때 해당 파라미터를 수정할 수 있도록 허용하는 기능이다.inout 키워드를 사용하면 함수 내부에서 파라미터를 수정할 수 있으며, 수정된 값이 함수 호출 이후에도 유지된다.func addOne(inout num: Int) { num += 1}var myNum = 5addOne(num: &myNum)print(myNum) // 출력: 6inout 원리함수가 호출되면 매개변수로 넘겨진 변수가 복사된다.함수 몸체에서 복사한 값을 수정한다.함수가 .. 2024. 5. 28.
[AppStore 배포 이슈!] ITMS-91053: Missing API declaration 2023년 가을부터 Apple 필수 API를 사용하는 앱을 App Store Connect에 업로드할 때 이메일을 받게 된다. 해당 API 사용 이유를 앱의 PrivacyInfo 파일에 설명하지 않으면, 2024년 5월부터 앱이 통과 되지 않는다. 앱 또는 제3자 SDK가 사용하는 Apple 필수 API의 각 카테고리에 대해, 앱 또는 제3자 SDK의 PrivacyInfo 파일에 있는 NSPrivacyAccessedAPITypes 배열에 추가해야 한다. 해당 내용의 메일을 받은 사람들이 많은 것 같다. 나 또한 처음 메일을 받고 어? 싶었지만, 별거 아니였다. ㅎ.ㅎ cmd + n 파일추가 눌러서 privacy를 검색하면 바로 나올것입니다. 프로젝트 파일에서 PrivacyInfo.xcprivacy를 생성.. 2024. 3. 22.
728x90
반응형