inflearn logo
강의

Course

Instructor

[Lv.2] SwiftUI Intermediate - Completing an App with Core Data and SwiftData

Weak Self

강의 Weak Self 코드 실행시 오류에 대해

653

coffee1oz

3 asked

0

강의에 대한 프로그램 실행을 하면 아래와 같은 에러가나고

화면상에 숫자는 "1"로 고정이 되네요.

강의 원본 소스도 같은 에러를 내보냅니다.

Xcode는 15.0.1

아이폰 모델은 15 Pro입니다

 

  1. 콘솔 로그

초기화 시작

Snapshotting a view (0x10b42e7e0, _UIButtonBarStackView) that is not in a visible window requires afterScreenUpdates:YES.

초기화 시작

초기화 해제

Snapshotting a view (0x10597b1c0, _UIButtonBarStackView) that is not in a visible window requires afterScreenUpdates:YES.

초기화 시작

초기화 해제

 

 

  1. 소스

//

//  WeakSelfInter.swift

//  SwiftUiIntermediate

//

//  Created by KISOO LEE on 10/7/23.

//

 

import SwiftUI

 

 

// MARK: - ViewModel

class WeakSelfInterViewModel: ObservableObject {

    @Published var data: String? = nil

    

    init() {

        print("초기화 시작")

        let currentCount = UserDefaults.standard.integer(forKey: "count")

        UserDefaults.standard.set(currentCount+1, forKey: "count")

        getData()

    }

    

    deinit {

        print("초기화 해제")

        let currentCount = UserDefaults.standard.integer(forKey: "count")

        UserDefaults.standard.set(currentCount-1, forKey: "count")

    }

    

    func getData() {

        DispatchQueue.main.asyncAfter(deadline: .now() + 10) {

            DispatchQueue.main.async {

                self.data = "NEW DATA !"

            }

        }

    }

    

}

 

// MARK: - Screen 1

struct WeakSelfInter: View {

    @AppStorage ("count") var count: Int?

 

    init() {

        count = 0

    }

    

    var body: some View {

        NavigationView {

            NavigationLink("2번째 페이지로 이동"){

                WeakSelfInter2()

            }

            .navigationTitle("1번째 페이지")

            //: NavigationLink

        } //: NavigationView

        .overlay(

            Text("\(count ?? 0)")

                .font(.largeTitle)

                .padding()

                .background(Color.green.cornerRadius(10))

                .padding()

            , alignment:  .topTrailing

        )

 

    }

}

 

// MARK: - Screen 2

struct WeakSelfInter2: View {

    

    @StateObject var vm: WeakSelfInterViewModel = .init()

    

    var body: some View {

        VStack (spacing: 10 ) {

            Text("2번째 페이지")

                .font(.largeTitle)

                .foregroundColor(.red)

        } //: VStack

        

        if let data = vm.data { // data에 String 값이 있는 경우

            Text(data)

        }

    }

}

 

#Preview {

    WeakSelfInter()

}

 

ios swift swiftui iphone-app

Answer 1

0

jacobko

안녕하세요 coffee1oz 님.

질문주신 코드에 관한 에러 및 1로 고정되는 현상은 NavigationView 가 Xcode 버전업과 iOS 17 버전으로 deprecated 에 대한 error 인거 같습니다. error message 에 대한 내용은 정확히 확인 할 수 없으나,

NavigationStack 으로 변경 후 시뮬레이션 실행한 결과 error message 가 없어졌으며, 포인팅되서 1이 되고 초기화 해제 함에따라 숫자가 다시 0으로 변경되는것을 확인하였습니다.

변경된 코드는 다음과 같습니다.

image

image

image

 

변경된 예제 코드도 함께 강의자료에 업로드해서 수정하였습니다.

error 가 발생된것을 알려주셔서 감사합니다

 

0

coffee1oz

프리뷰에서 상태 숫자의 값은 0, 1 변경이 잘되는데 시뮤레이터 기동은 안되네요.

그리고, ios 버전이 16이상만 사용 가능 합니다. 제가 app 버전을 16.0으로 변경해서 에러를 없앤 후 실행 한겁니다.

image

수강 기간 연장 문의

0

28

1

수강연장부탁드려도될까요..

0

42

2

Combine Playground 에서 실행 시

0

58

2

70강 - 글로벌 액터로 격리된 Protocol 을 extension 에서 conform 시 타입 본체의 격리 수준 질문

0

42

1

searchable이 화면 하단에 위치해요

0

62

2

Drawing Cycle 관련 질문

0

72

1

앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?

0

95

2

델리게이트 패턴 관련 질문

0

66

2

ios 애드몹 광고

0

134

2

수강 기간 연장 부탁드릴 수 있을까요?

0

61

1

Sorted, Filter, Map - UserViewModel 부분 오류 발생

0

102

1

ViewBuilder 강의 관련 질문입니다.

0

80

1

CoreData Array의 변화에 따른 SwiftUI View 변화 적용(with @Observable Macro)

0

205

2

init-deinit의 무한루핑을 벗어나는 방법이 궁금합니다.

1

167

2

Apple 공식 문서 보는법

0

325

2

5월 업데이트 예정이었던 , iOS17 컨텐츠 SwifData 업데이트 언제 되나요 ?

0

252

1

Spacer() 를 넣으니 예제처럼 SafeArea 확보가 안됩니다.

0

490

3

Local Notification 예제 문의

0

320

2

Local Notification 강의 편집오류 있어요

0

236

2

강의중 코드폴딩 단축키 (커맨트+옵션+왼쪽방향키)

0

208

2

코어데이터에 중복값 입력 방지

0

313

1

Combine 관련 질문드립니다.

0

244

1

if let else 질문있습니다.

0

220

1

SwiftData가 Core Data를 대체하는지요?

0

2111

1