iOS 응용 (swift)
[iOS - swift] deprecated 자동완성 fix 버튼 제공하기 (renamed)
jake-kim
2025. 2. 5. 01:56
deprecated 옵션 기초 개념
- 만약 새로운 함수가 필요하여 기존에 사용하던 함수는 deprecated되었다는 의미를 개발자에게 주고 싶은 경우 아래처럼 @availble(*, deprecated)를 사용하여 알려주는 방법이 존재
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
deprecatedFunc()
deprecatedFunc2()
}
@available(*, deprecated)
func deprecatedFunc() {
}
@available(*, deprecated, message: "새로운 A 함수를 사용하세요")
func deprecatedFunc2() {
}
}
- 이렇게 되면 개발자는 단지 메세지만 볼 수 있을 뿐, 직접 message를 보고 어떤 함수를 사용해야할지 결정해야하는 번거로움이 존재
- 조금 더 직관적으로 개발자에게 새로운함수를 쓸 수 있도록 유도하려면 컴파일 타임에 fix버튼을 주어서 버튼만 누르면 알아서 수정되는 방법이 더욱 좋음
fix 버튼 제공하기 "renamed"
- @available(*, deprecated, renamed:) 매크로를 사용하면 fix버튼을 손쉽게 제공이 가능
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
myOldFunc()
}
@available(*, deprecated, renamed: "myNewFunc") // <-
func myOldFunc() {
// ...
}
func myNewFunc() {
// ...
}
}
Xcode화면)
- 만약 파라미터 이름이 바뀐다면?
- renamed에 애플에서 사용하는 *단축 함수 표기명을 사용하면 반영됨
- *단축 함수 표기명
- 콜론을 제외하고 메서드 시그니쳐 형태로 사용하는 것
ex)
func myOldFunc(oldParam: Int) {} // myOldFunc(oldParam:)
func myOldFunc2(oldParam: Int, oldParam2: String) {} // myOldFunc(oldParam:oldParam2:)
- 만약 파라미터명이 oldParam에서 newParam으로 바뀌었다면 renamed에 아래처럼 작성
@available(*, deprecated, renamed: "myNewFunc(newParam:)")
func myOldFunc(oldParam: Int) {
}
func myNewFunc(newParam: Int) {
}
주의) 파라미터가 한 개만 되고, 두 개 이상은 동작안되므로 주의