iOS/Swift

[Swift] NSObjectProtocol, NSObject

최지철 2024. 7. 16. 10:20
728x90
반응형

Cannot declare conformance to 'NSObjectProtocol' in Swift;


NSObject

NSObject는 모든 Objective-C 클래스의 기본 클래스이다.

NSObject는 기본적으로 MacOs와 iOS 최상위에 위치하고 있다. 이것은 모든 객체가 공통적으로 가져야 하는 기본적인 동작을 정의하며, 객체 지향 프로그래밍의 근간이 되기도 한다.

 

  • 객체 초기화 및 메모리 관리:
    • init: 기본 초기화 메서드
    • deinit: 객체가 해제될 때 호출되는 메서드로, Swift에서는 deinit 키워드로 사용
  • 객체 비교 및 해싱:
    • isEqual(_:)와 hash: 객체 비교와 해싱을 위한 메서드
  • 런타임 클래스 정보:
    • class와 isKind(of:): 객체의 클래스 정보를 제공하고, 특정 클래스의 인스턴스인지 확인
  • 메서드 실행 및 셀렉터:
    • perform(_:): 셀렉터를 사용하여 메서드를 실행
    • responds(to:): 객체가 특정 메서드를 응답할 수 있는지 확인
  • 키-값 코딩 및 관찰:
    • value(forKey:)와 setValue(_:forKey:): 키-값 코딩을 지원
    • addObserver

NSObjectProtocol

NSObjectProtocol은 Objective-C의 핵심 프로토콜 중 하나로, 모든 Objective-C 클래스가 암묵적으로 채택하는 프로토이다.
이 프로토콜은 Objective-C 런타임에서 객체가 기본적으로 제공해야 하는 메서드들을 정의한다.

  • isEqual(_:): 두 객체가 같은지 비교
  • hash: 객체의 해시 값을 반환합니다. 이 값은 isEqual(_:) 메서드와 일관성을 가져야함
  • class: 객체의 클래스 정보를 반환
  • self: 객체 자신을 반환
  • perform(_:): 주어진 셀렉터를 실행

 

728x90
반응형