[Swift/SwiftUI] View 선언 방법: struct vs var vs func 차이점

g4oo0·2025년 3월 25일

Swift

목록 보기
1/4

view 선언하는 방법이 여러개 있길래 별 생각없이 쓰고 있었는데 아무래도 차이를 한 번 정리하고 가는게 좋을 것 같아서 정리를 해보려 한다.. (틀린게 있다면 알려주세요..)

✅ Struct (구조체)

  • 뷰는 보통 struct로 정의된다. struct는 Swift에서 값 타입을 의미하며, 뷰는 UI를 그리기 위한 구조로 사용된다.
  • 뷰는 View 프로토콜을 준수하는 구조체로, 상태를 추적하고 UI를 렌더링한다.
  • body속성을 통해 화면에 표시될 뷰를 정의한다.
struct ContentView: View {
	var body: some View {
    	Text("Hello, World!")
    }
}

➡️ struct ContentView는 View 프로토콜을 준수하는 구조체로, 화면에 표시될 뷰를 정의합니다.

✅ var (속성)

  • var속성을 정의하는데 사용된다.
  • View를 반환하는 계산된 속성으로 사용될 수 있다.
  • 상태가 변하지 않는 고정된 뷰를 저장할 때 주로 사용된다.
  • var는 뷰를 저장하는 변수로, 동적인 값이나 고정된 뷰를 반환하는 데 유용하다.
코드를 struct ContentView: View {
    var ButtonView: some View {  // var로 뷰 선언
        Button(action: {
            print("버튼 클릭됨")
        }) {
            Text("버튼")
        }
    }

    var body: some View {
        VStack {
            ButtonView  // ButtonView 속성을 사용하여 버튼 표시
        }
    }
}

➡️ ButtonView는 고정된 뷰를 반환하는 계산된 속성으로, 여러 번 재사용 가능!

✅ func (함수)

  • func동적으로 뷰를 생성하고, 매개변수를 받아서 뷰를 동적으로 변경할 때 사용됩니다.

  • func는 로직을 수행하고 매개변수를 받을 수 있기 때문에, 동적으로 뷰를 생성하거나 뷰의 변화를 관리하는 데 적합합니다.

struct ContentView: View {
    func ButtonView(title: String) -> some View {  // func로 뷰 생성
        Button(action: {
            print("\(title) 버튼 클릭됨")
        }) {
            Text(title)
        }
    }

    var body: some View {
        VStack {
            ButtonView(title: "버튼 1")  // 매개변수를 이용해 뷰를 동적으로 생성
            ButtonView(title: "버튼 2")
        }
    }
}

➡️ ButtonView(title:)는 매개변수에 따라 동적으로 뷰를 생성합니다.

😵‍💫 정리

구성요소설명
struct뷰 구조체View 프로토콜을 준수하며, UI를 정의. 주로 body 속성으로 뷰를 그린다
var속성으로 뷰를 저장하는 데 사용되며, 고정된 뷰를 반환할 때 유용. 계산된 속성으로 동적으로 뷰를 반환할 수도 있음.
func매개변수를 받아 동적인 뷰를 생성하는 데 사용. 동적 UI를 만들 때 유용

🤢 자 그럼 이쯤되면 결국 다 화면에 표시될 뷰를 만들 수도 있고, 동적으로도 만들 수 있고... 아니 도대체 차이가 뭐야? 라는 생각이 들 수 있다..일단 나는 그러하다..
결론적으로 말하면 뭐 어떻게든 사용 가능하지만 사용 목적과 동작 방식에 따라 뭘 선택할지 고르면 된다!

💡 추가로 하나의 뷰에서만 사용하고 다른 뷰에서 접근하지 못하게 하려면 private 붙어주는 거 잊지 말기!

💡 자주 사용하는 요소들은 따로 빼서 만들어주자

0개의 댓글