seong_hye, the developer

Swift) 문법 정리 - @attribute 본문

IOS

Swift) 문법 정리 - @attribute

seong_hye 2022. 10. 22.

📘 Attribute

@attribute는 실제 키워드가 아닌 "속성"을 나타내는 표기 방식

즉, @기호로 시작하는 것들을 통틀어 **Swift 속성"

컴파일러나 런타임에게 특별한 의미를 부여하는 메타 정보 역할을 함

 

@attribute = 함수, 타입, 변수 등에 특수한 동작이나 정보를 부여하는 컴파일러 지시자


🔹주요 Swift Attribute 목록과 설명

Attribute 용도
@available 특정 OS 버전 이상에서만 사용 가능
@discardableResult 반환값을 사용하지 않아도 경고 발생 X
@objc Objective-C와 상호 운용 (Selector 등)
@IBAction, @IBOutlet 스토리보드와 연결
@State SiwftUI 상태 변수 (UI를 다시 그림)
@Binding 부모 뷰로부터 전달받은 상태
@Published Combine에서 사용, 값이 바뀌면 알림
@MainActor 메인 스레드에서 동작 보장
@escaping 클로저가 함수 바깥에서도 사용될 수 있음을 표시
@Sendable 병렬 스레드 안전한 클로저임을 명시 (Swift Concurrency)

 


🔹예제

✅ @available

@available(iOS 17.0, *)
func start() {
	// iOS 17 이상에서만 사용 가능
}

 

✅ @State + @ Binding

@State는 SwiftUI에서 값이 바뀌면 자동으로 뷰를 다시 그림

@Binding은 부모뷰에서 받아온 값으로 부모뷰의 뷰가 다시 그려짐

struct TestView: View {
	@Binding var result
    @State private var count = 0 
    
    var body: some View {
    	Button("증가") {
        	count += 1
            result = count
        }
 	}
}

 

✅ @Published

@Published는 값이 바뀌면 구독 중인 뷰에 값이 바뀌었다는 알림을 보냄

class MainViewModel: ObservableObject {
	@Published var AllCount: Int = 0
}

 

✅ @objc + @IBAction

Interface Builder와 연결될 수 있도록 @objc 속성 포함

@IBAction func buttonTapped(_ sender: UIButton) {
	print("버튼 눌림")
}

🔹요약 정리

특징 설명
형식 @로 시작 (@available, @State, @objc 등)
역할 메타 정보, 속성 래핑, 컴파일러 지시자
적용 대상 함수, 변수, 타입 등
용도 SwiftUI 상태 관리, 버전 제한, Objective-C 호환 등 다양

 

Comments