반응형

전체 글 84

iOS 개발자를 위한 토막 상식 7

iOS 개발자를 위한 토막 상식, 일곱 번째 1. ViewController의 생명주기(Lifecycle)는 UIView와 다르게 동작한다.ViewController는 메모리에 로드될 때 viewDidLoad, 사용자에게 보여지기 직전에 viewWillAppear, 보여진 후 viewDidAppear 등이 호출된다. 반면, UIView는 init, layoutSubviews, draw(_:) 등에서 주로 커스터마이징 된다.이 차이를 이해하면 UI 구성 타이밍과 네트워크 호출 시점을 정확히 잡을 수 있다.override func viewDidLoad() { super.viewDidLoad() print("뷰가 메모리에 올라옴")} 2. ARC는 강한 순환 참조를 해결하지 못하므로 weak 또는 ..

iOS 개발자를 위한 토막 상식 6

iOS 개발자를 위한 토막 상식, 여섯 번째 1. XCTestExpectation은비동기 테스트에서 사용 비동기 호출을 테스트할 때 expectation(description:)과 wait(for:timeout:)를 활용하면 테스트가 완료되기를 기다릴 수 있다.let expectation = expectation(description: "API 응답 대기")apiCall { result in XCTAssertNotNil(result) expectation.fulfill()}wait(for: [expectation], timeout: 5)2. lazy var는 인스턴스가 처음 호출될 때 초기화된다.메모리 효율과 성능 향상을 위해 무거운 객체를 lazy로 선언하면 처음 접근 시점까지 초기화를 늦..

[프로그래머스] 약수의 합

문제 설명정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.제한 사항n은 0 이상 3000이하인 정수입니다.입출력 예nreturn122856입출력 예 설명입출력 예 #112의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다. 입출력 예 #2 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.제출 답안func solution(_ n:Int) -> Int { var result = 0 // 1부터 n까지 반복 for i in 1...n { // n을 i로 나눈 나머지가 0이면 if n % i == 0 { // result에 더한다 result +..

iOS 개발자를 위한 토막 상식 5

iOS 개발자를 위한 토막 상식, 다섯 번째 1. defer는 리소스 해제에 좋다 정의: defer는 현재 스코프가 종료되기 직전에 실행되는 코드를 정의한다.활용: 파일 닫기, 락 해제, 알림 전송 등 리소스 정리에 유용func readFile() { let file = openFile() defer { closeFile(file) } // 파일 작업 수행}2. @MainActor를 써야 할 때정의: @MainActor는 해당 함수나 클래스가 메인 스레드에서 실행돼야 함을 명시한다.활용: UI 관련 작업을 DispatchQueue.main.async 없이도 안전하게 실행할 수 있다.@MainActorfunc updateUI() { self.label.text = "Updated"}..

iOS 개발자를 위한 토막 상식 4

iOS 개발자를 위한 토막 상식, 네 번째 1. @State vs @Binding 혼동 주의@State는 뷰 내부에서 값을 소유하고 관리할 때, @Binding은 외부에서 주입받은 상태를 수정할 때 사용한다.잘못 쓰면 값이 업데이트되지 않거나 메모리 누수가 생길 수도 있다.2. 앱이 백그라운드 진입 시 작업을 완료하려면 beginBackgroundTask()를 활용하자설명: 예를 들어 파일 저장이나 로그 업로드 같은 작업이 앱 종료 전에 끝나야 할 때 UIApplication.shared.beginBackgroundTask를 써서 시간을 벌 수 있다.주의: 반드시 endBackgroundTask(_:)로 종료해줘야 한다.3.UIStackView는 isHidden만 바꿔도 레이아웃이 자동 갱신된다설명: U..

iOS 개발자를 위한 토막 상식 3

iOS 개발자를 위한 토막 상식 세 번째 1. @discardableResult정의: 함수의 반환값을 사용하지 않아도 컴파일러 경고가 발생하지 않도록 해주는 속성.@discardableResultfunc add(_ a: Int, _ b: Int) -> Int { return a + b} 활용 팁: 체이닝 함수나 테스트용 함수에 유용함, 결과 무시할 수 있다2. .onAppear()과 .task()차이항목.onAppear().task()실행 시점뷰가 화면에 나타날 때마다 호출됨최초 한 번만 실행비동기 지원❌ (직접 async 처리 필요)✅ async 클로저 사용 가능 실전 팁: SwiftUI에서 API 호출은 .task로, 상태 초기화는 .onAppear로 분리3. UserDefaults 저장 가능한..

iOS 개발자를 위한 토막상식 2

iOS 개발자를 위한 토막 상식 두 번째. 1. guard문은 if let보다 깔끔한 탈출문이다.옵셔널 바인딩 시 guard는 실패 조건에 초점을 맞춰 조기 탈출할 수 있도록 한다.코드 흐름을 납작하게(flat하게) 만들어 가독성을 높힌다.func login(user: User?) { guard let user = user else { print("유저 정보 없음") return } print("환영합니다, \(user.name)")} 2. weak self는 언제나 필요한 건 아니다.클로저 안에서 self를 캡처할 때 retain cycle이 생기면 앱이 메모리를 놓지 않음하지만 self가 살아 있어야 하는 작업이라면 unowned self도 가능팁: 단순한 비..

iOS 개발자를 위한 토막상식 1

iOS 개발자를 위한 토막상식 5가지 1. @MainActor는 UI 작업의 수호자Swift Concurrency 도입 후, UI 업데이트는 @MainActor로 지정된 함수나 프로퍼티에서 안전하게 실행해야 한다.@MainActorfunc updateUI() { self.label.text = "업데이트 완료!"} 왜 중요할까? 백그라운드 쓰레드에서 UI를 건드리면 강제 종료가 발생 할 수 있다.2. UserDefaults는 임시 저장소일 뿐이다.작은 데이터 저장에는 편하지만, 구조화된 데이터나 대용량은 CoreData나 SwiftData, 혹은 FileManager를 고려해야 한다.앱 삭제 시 함께 지워진다.보안에 민감한 데이터 저장은 Keychain을 써야한다.3. 앱의 메모리 경고 감지하기U..

[프로그래머스 기초문제] 이차원 리스트(배열)

1. 정수를 나선형으로 배치하기양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.제한사항1 ≤ n ≤ 30입출력 예nresult4[[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]5[[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]]입출력 예 설명입출력 예 #1예제 1번의 n의 값은 4로 4 × 4 배열에 다음과 같이 1부터 16까지 숫자를 채울 수 있습니다.행 \ ..

[프로그래머스 기초문제] Day 24 조건문 활용, 반복문 활용, 이차원 리스트(배열)

1. 커피 심부름팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다. 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다. 각 팀원에게 마실 메뉴를 적어달라고 하였고, 그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다.각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요. order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다.order의 원소의미"iceamericano", "americanoice"차가운 아메리카노"hotameri..

반응형