형태

@MainActor
struct NavigationStack<Data, Root> where Root : View

위의 형태와 같은 형태이며 간단하게 설명하자면

@MainActor 는 메인스레드에서 활동하는 Actor 입니다.

즉 기본적인 DispatchQueue.main 와 동일한 활동을 하는 singleton형태의 Actor이다.

이유 설명은 기본적인 다중 스레드 사용 환경으로 인해 own state 를 가질 수 있도록 하는 형태이다.

shared mutable state를 표현 하기 위해서 Coroutine과 닮은 형태로 만든 것 같다.

where Root : view 는 Root가 Generic Type 인데 View를 호출하는 프로토콜을 따르는 제약이다.


struct NavigationLink<Label, Destination> where Label : View, Destination : View

사용 예시

// Pushable stack
@State private var presentedParks : [Park] = []

var body : some View {    
	NavigationStack(path: $presentedParks) {    
					List(parks) { park in        
				NavigationLink(park.name, value: park)    
		}.navigationDestination(for: Park.self) { park in        
								ParkDetails(park: park)   
 }
}

위와 같은 형태로 사용됩니다.

다른 형태