반응형

ios 21

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 +..

카테고리 없음 2025.04.27

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..

[컨퍼런스] 스파르타 내일배움캠프 iOS 컨퍼런스 SwiftRise 후기

주니어 개발자를 위한 iOS 컨퍼런스 SwiftRise2025년 2월 10일 참가한 스파르타 내일배움캠프에서 주최한 iOS 컨퍼런스 SwiftRise의 후기 글을 남기고자 합니다.이번 컨퍼런스는 단순히 강연을 듣는 자리가 아니라, 최신 기술 동향과 유용한 커리어 팁을 얻고, 네트워킹을 통해 다양한 인사이트를 얻을 수 있는 소중한 시간이었습니다. 이 글에서는 각 세션의 주요 내용을 간략히 전달하고 제가 얻은 깨달음을 공유해보려고 합니다. 컨퍼런스 목적이 컨퍼런스는 주니어와 취업 준비중인 iOS 개발자들에게 유익한 기술 인사이트를 제공하고, 네트워킹을 통해 더 나은 커리어를 설계할 기회를 제공하기 위해 마련되었습니다.  일정 요약- 시간: 13:10 ~ 18:40  - 구성: 기술 강연, 네트워킹, 럭키드로..

카테고리 없음 2025.02.13

[iOS] 애플 디자인 가이드

애플 디자인 가이드라인: iOS 앱 디자인의 핵심 원칙애플의 Human Interface Guidelines(HIG)는 iOS 앱 디자인의 표준을 정의하는 중요한 문서로, 사용자 경험(UX)과 사용자 인터페이스(UI)의 품질을 높이는 데 필수적인 역할을 합니다. 이 가이드라인은 단순히 미적 요소를 넘어, 기능성과 접근성을 포함한 전반적인 사용자 경험을 개선하기 위한 원칙들을 제시합니다. 본 글에서는 애플 디자인 가이드라인의 주요 원칙과 이를 iOS 앱 디자인에 적용하는 방법을 살펴보겠습니다.1. 명확성(Clarity)명확성은 애플 디자인 철학의 핵심입니다. 사용자는 앱을 직관적으로 이해할 수 있어야 하며, 불필요한 요소로 인해 혼란을 겪어서는 안 됩니다.콘텐츠 중심: 콘텐츠가 중심이 되도록 불필요한 버튼..

카테고리 없음 2024.11.27
반응형