Attribute Keyword(어트리뷰트 키워드)
- Swift에서 Attribute Keyword(어트리뷰트 키워드)는
@ 기호로 시작하며, 컴파일러에게 특정한 동작을 지시하는 메타데이터이다
- 즉, 코드의 특정 부분에 특별한 속성을 부여하여 컴파일러가 어떠헥 처리해야 하는지 알려주는 역할을 한다
Attribute Keyword(어트리뷰트 키워드)를 사용하는 이유
- 컴파일러의 동작을 조정
- 가독성을 높이고 코드의 의도를 명확하게 한다
- Objective-C와의 호환성 제공
- 불필요한 경고를 방지하거나 최적화를 돕기 위해 사용
Swift에서 자주 사용하는 Attribute Keyword
| Attribute Keyword | 설명 |
|---|
@discardableResult | 반환값을 사용하지 않아도 경고를 발생시키지 않음 |
@IBOutlet | Interface Builder와 연결되는 UI 요소를 나타냄 |
@IBAction | Interface Builder에서 버튼 클릭 등의 액션을 연결할 때 사용 |
@objc | Objective-C 코드와 상호작용할 수 있도록 만듦 |
@available | 특정 OS 버전에서만 사용할 수 있도록 제한 |
@escaping | 클로저가 함수의 실행이 끝난 후에도 유지됨을 나타냄 |
@frozen | 구조체 또는 열거형이 변경되지 않음을 나타냄 |
@inlinable | 함수를 인라인(inline)으로 최적화하여 성능을 높임 |
@propertyWrapper | 프로퍼티의 동작을 커스텀할 수 있도록 함 |
@main | SwiftUI 앱의 진입점을 정의할 때 사용 |
@discardableResult
- Swift에서는 일반적으로 함수의 반환값을 사용하지 않으면 경고(Warning)가 발생한다
- 하지만 어떠한 경우에는 반환값을 반드시 사용할 필요가 없는데, 이럴 때
@discardableResult 어트리뷰트를 사용하면 경고 없이 반환값을 무시할 수 있다
사용 예제
1. @discardableResult 없이 반환값을 무시하는 경우(경고 발생)
func multiply(_ a: Int, _ b: Int) -> Int {
return a * b
}
multiply(3, 4)
multiply(3, 4) 의 반환값을 사용하지 않기 때문에 경고가 발생한다
2. @discardableResult를 사용하여 경고 제거
@discardableResult
func multiply(_ a: Int, _ b: Int) -> Int {
return a * b
}
multiply(3, 4)
@discardableResult 를 추가하면, 반환값을 사용하지 않아도 경고가 사라진다
3. 메서드 체이닝에 활용
class Counter {
var count = 0
@discardableResult
func increment() -> Int {
count += 1
return count
}
}
let counter = Counter()
counter.increment()
counter.increment()
let result = counter.increment()
print(result)
@discardableResult 덕분에 increment() 를 호출할 때 반환값을 사용하지 않아도 경고가 발생하지 않는다
@discardableResult 는 언제 사용하면 좋을까?
- 메서드 체이닝을 지원할 때:
메서드를 연달아 호출할 수 있도록 설계할 때 반환값을 무시할 수 있도록 한다
- 반환값이 있지만 반드시 사용할 필요는 없을 때:
특정 함수가 결과값을 반환하지만, 호출하는 사람이 이를 사용하지 않아도 문제가 없을 경우
- 불필요한 경고를 피하기 위해:
사용자가 반환값을 필요로 하지 않는다면, 경고를 방지할 수 있다