아직까지 애플의 프레임워크는 Objective-C 언어로 작성된 코드가 많다
따라서 호환성을 위해 @objc 표기가 필요하다
@objc 사용에 대한 기준이 궁금해서 찾아본 내용!
애플의 공식 문서 확인
애플의 공식 문서에서는 API가 Objective-C에서 온 것인지 확인할 수 있다
Swift API의 경우 "Swift"로 표시되며, Objective-C API는 "Objective-C"로 표시된다
API 이름과 타입 확인
Objective-C API는 클래스 이름에 NS 로 시작하는 경우가 많다
예시) NSString, NSArray, NSDate, NSTimer 등
UIKit의 클래스들은 UI 접두사를 사용한다
예시) UIView, UIViewController, UIButton 등
메서드 시그니처와 셀렉터 사용 여부 확인
셀렉터를 사용하는 메서드는 보통 Objective-C 기반이다
예시) perform(_:with:afterDelay:), addTarget(_:action:for:), Timer.scheduledTimer(timeInterval:target:selector:userInfo:repeats:)
어노테이션 확인
애플의 API 설명서에서 Objective-C와 Swift 호환성을 나타내는 @objc 속성이 사용된 경우
@objc 사용 예시 :)
NSTimer (현재 Swift에서는 Timer)
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: true)
@objc func timerFired() {
// 타이머가 작동할 때 실행되는 코드
}
UIKit의 제스처 인식기
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap))
view.addGestureRecognizer(tapGestureRecognizer)
@objc func handleTap() {
// 탭 제스처가 인식될 때 실행되는 코드
}
NSNotificationCenter (현재 Swift에서는 NotificationCenter)
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: NSNotification.Name(rawValue: "MyNotification"), object: nil)
@objc func handleNotification() {
// 알림을 받았을 때 실행되는 코드
}
UIButton의 addTarget 메서드
let button = UIButton()
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
@objc func buttonTapped() {
// 버튼이 눌렸을 때 실행되는 코드
}
'🍎 Swift > iOS 학습 노트' 카테고리의 다른 글
[강의노트👩🏻💻] API(Application Programming Interface) (0) | 2024.07.30 |
---|---|
[강의노트👩🏻💻] JSON(JavaScript Object Notation)와 Codable (0) | 2024.07.30 |
[강의노트👩🏻💻] CoreData 코어 데이터 (4) | 2024.07.11 |
[Swift 🍎] configureUI() (0) | 2024.07.10 |
[Swift 🍎] ViewController 메서드 (0) | 2024.07.10 |