lunchScreen / Interview_Questions

기술면접을 준비하는 버디들
73 stars 10 forks source link

NSObject부터 UIButton 까지 상속 과정의 계층과 역할을 설명하시오. #49

Open dailynj opened 2 years ago

co3oing commented 2 years ago

NSObject는 Objective-C 클래스 계층 구조의 루트 클래스로, 서브 클래스가 런타임 시스템에 대한 기본 인터페이스와 Objective-C 개체로 작동하는 기능을 상속합니다. UIResponder는 NSObject를 상속받고, 이벤트에 응답하고 이벤트를 처리하기 위한 추상 인터페이스입니다. UIView는 UIResponder를 상속받고, 화면의 직사각형 영역에 대한 콘텐츠를 관리하는 개체입니다. UIControl은 UIView를 상속받고, 사용자 상호 작용에 대한 응답으로 특정 작업이나 의도를 전달하는 시각적 요소인 컨트롤의 기본 클래스입니다. UIButton은 UIControl을 상속받고, 사용자 상호 작용에 대한 응답으로 사용자 지정 코드를 실행하는 컨트롤입니다.

dailynj commented 2 years ago

NSObject부터 UIButton까지의 계층은 NSObject → UIResponder → UIView → UIControl → UIButton 입니다. NSObject : 모든 클래스의 루트클래스 UIResponder (UIView 객체가 모두 Responder): 이벤트를 핸들링하고 이벤트에 반응할 수 있는 객체 UIControl : 특정 액션이나 이벤트를 전달하는 시각적 요소(UIButton, Date Picker..)들의 루트클래스

inuinseoul commented 2 years ago

애플에서는 NSObject를 최상위 루트 클래스로 활용하고 있으며, 이는 Objective-C와 관련된 메모리 관리 및 내부 운영체제와 관련된 처리를 담당합니다. 상속 구조는 [NSObject → UIResponder → UIView → UIControl → UIButton] 입니다.

tmfrlrkvlek commented 2 years ago

UIButton은 UIControl, UIControl은 UIView, UIView는 UIResponder, UIResponder는 최종적으로 NSObject를 상속받고 있습니다. 끝에서부터 설명하자면 UIResponder는 Objective-C 런타임 시스템을 사용하기 위해 NSObject를 상속받습니다. UIView는 touchBegan, pressChanged와 같은 여러 이벤트들을 처리하기 위해 UIResponder를 상속 받고, UIControl은 draw, layout, animation, subview 등의 관리를 위해 UIView를 상속받습니다. 마지막으로 UIButton은 touchUpInside 등의 액션이나 드래그 같은 사용자의 의도를 전달받아 처리하기 위해 UIControl을 상속 받습니다.

Cocoa Touch의 Root 클래스인 NSObject 클래스에 대해서 참고

sustainable-git commented 2 years ago

UIButton은 NSObject, UIResponder, UIView, UIControl, UIButton 으로의 상속 과정을 거칩니다. 먼저 NSObject는 모든 클래스가 가져야 하는 기능을 가지고 있어 Objc 런타임 시스템에 대한 인터페이스를 제공합니다. 그다음 UIResponder는 UIKit 앱 이벤트 처리를 위한 백본을 구성합니다. 다음으로는 UIView는 기본적인 block을 만들고, 모든 view에 공통적인 행동을 정의해 줍니다. 그리고 UIControl은 Target-Action Mechanism과 Event 처리를 제공합니다. 마지막으로 UIButton은 버튼의 모양과 형태를 결정합니다.

duyeonnn commented 2 years ago

UIButton ← UIControl ← UIView ← UIResponder ← NSObject