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 |
Tags
- uitableview
- 리팩토링
- UITextView
- uiscrollview
- 리펙터링
- SWIFT
- 애니메이션
- Clean Code
- Human interface guide
- 리펙토링
- swift documentation
- MVVM
- collectionview
- Refactoring
- UICollectionView
- Xcode
- Observable
- RxCocoa
- rxswift
- tableView
- clean architecture
- swiftUI
- ribs
- combine
- 클린 코드
- map
- HIG
- 스위프트
- ios
- Protocol
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] deprecated 자동완성 fix 버튼 제공하기 (renamed) 본문
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) {
}
주의) 파라미터가 한 개만 되고, 두 개 이상은 동작안되므로 주의
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] private extension과 fileprivate extension 개념 (1) | 2025.01.30 |
---|---|
[iOS - swift] 키보드와 동시에 뷰 올리는 방법 (키보드와 특정 뷰 사이 거리 유지) (1) | 2025.01.09 |
[iOS - swift] 상대좌표 헷갈리기 쉬운 개념 convert(_:to:), convert(_:from:) (#좌표변환) (0) | 2025.01.07 |
[iOS - SwiftUI] 뷰 속성 순서의 중요성 (SwiftUI 뷰 구현 중 놓치는 것) (0) | 2024.12.12 |
[iOS - SwiftUI] 터치 이벤트 받는 방법(contentShape) (1) | 2024.12.10 |
Comments