Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- Animation
- struct
- segue
- NotificationCenter
- 글또
- protocol
- viewlifecycle
- apns
- http
- Git
- escaping
- ScrollView
- SWIFT
- calendar
- self
- Refresh
- 화면전환
- list
- array
- PushNotification
- mvvm
- Switch
- class
- 고차함수
- IOS
- singleton
- uikit
- Observer
- error
- SWIFTUI
Archives
- Today
- Total
seong_hye, the developer
Swift) 문법 정리 - @attribute 본문
📘 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 호환 등 다양 |
'IOS' 카테고리의 다른 글
Swift) APNs 설정 방법 알아보기 (0) | 2022.10.23 |
---|---|
Swift) APNs에 대해 알아보기 & 설정 방법 알아보기 (0) | 2022.10.23 |
Swift) Notification에 대해 알아보기 (0) | 2022.10.19 |
Swift) 문법정리 - 확장(Extension) (0) | 2022.10.18 |
Swift) Firebase에 대해서 알아보기 (0) | 2022.10.10 |
Comments