iOS

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

Devleoper_yh 2025. 4. 22. 22:34
반응형

1. @State vs @Binding 혼동 주의

  • 설명: @State는 뷰 내부에서 값을 소유하고 관리할 때, @Binding은 외부에서 주입받은 상태를 수정할 때 사용한다.
    • 잘못 쓰면 값이 업데이트되지 않거나 메모리 누수가 생길 수도 있다.

2. 앱이 백그라운드 진입 시 작업을 완료하려면 beginBackgroundTask()를 활용하자

  • 설명: 예를 들어 파일 저장이나 로그 업로드 같은 작업이 앱 종료 전에 끝나야 할 때 UIApplication.shared.beginBackgroundTask를 써서 시간을 벌 수 있다.
  • 주의: 반드시 endBackgroundTask(_:)로 종료해줘야 한다.

3.UIStackView isHidden만 바꿔도 레이아웃이 자동 갱신된다

  • 설명: UIStackView는 내부 뷰의 isHidden 속성만 바꿔도 자동으로 레이아웃을 다시 계산해줘서 constraint를 따로 조정하지 않아도 깔끔하게 처리된다.
  • : 애니메이션과 함께 사용하면 UX 향상에도 좋다.

4. Xcode Previews @PreviewProvider로 UIKit도 프리뷰 가능하다

  • 설명: SwiftUI만의 전유물이 아니다.
    • UIKit 기반 뷰도 UIViewRepresentable을 활용하면 Canvas에서 실시간으로 프리뷰할 수 있다.
#if DEBUG
import SwiftUI

struct MyView_Preview: PreviewProvider {
    static var previews: some View {
        ViewPreview {
            MyCustomUIKitView()
        }
    }
}
#endif

 


5. OSLog으로 디버그 로그를 성능 저하 없이 남길 수 있다

  • 설명: print() 대신 os_log를 사용하면 로그를 더 세밀하게 분류하고, 릴리즈 빌드에서는 자동으로 비활성화되므로 성능에도 유리하다.
import os.log

let logger = Logger(subsystem: "com.myapp", category: "network")
logger.debug("API 호출 성공: \(response.debugDescription)")

 

 

반응형