iOS 에서 NSObject 의 두 가지 의미:클래스 와 프로 토 콜 상세 설명
프로 토 콜 에서
NSObject 프로 토 콜 을 준수 하지만 헤더 파일 에서 만 설명 합 니 다.컴 파 일 러 는 인 스 턴 스 변 수 를 자동 으로 생 성하 지 않 습 니 다.getter 와 setter 방법 을 스스로 처리 해 야 합 니 다.
NS/CF/CC/CA/UI 이 접두사 들 은 각각 어떤 의미 입 니까?
CF 코코아 Fundation 프레임 워 크
CG CoreGraphics 프레임 워 크
CA Coreanimatigon 프레임 워 크
UI UIkit 프레임 워 크
다음은 더 이상 할 말 이 없 으 니 상세 한 소 개 를 살 펴 봅 시다.
1.구분:클래스 의 NSObject 와 프로 토 콜 의 NSObject
iOS 개발 에서 애플 이 제공 하 는 일부 시스템 클래스 는 NSObject 의 하위 클래스 에 속 합 니 다.예 를 들 어 UIColor 류 의 정 의 는 다음 과 같 습 니 다.
UIColor
또는 사용자 정의 클래스 도 NSObject 에서 계승 합 니 다.예 를 들 어 다음 그림 과 같 습 니 다.
사용자 정의 클래스 의 부모 클래스
그러나 NSObject 는 기본 클래스 뿐만 아니 라 협의의 의미 도 있 습 니 다.우 리 는 루트 프로 토 콜 이 라 고 할 수 있 습 니 다.예 를 들 어 다음 그림 과 같 습 니 다.
NSObject 프로 토 콜
사실 NSObject 클래스 의 정 의 를 통 해 알 수 있 듯 이 NSObject 클래스 자체 가 NSObject 프로 토 콜 을 따 릅 니 다.아래 그림 과 같 습 니 다.
NSObject
2.프로 토 콜 NSObject 의 사용법
NSObject 프로 토 콜 의 정의
일반 프로 토 콜 의 용법
@protocol MyProtocol
- (void)foo;
@end
루트 프로 토 콜 의 용법 을 계승 하 다.
@protocol MyProtocol<NSObject>
- (void)foo;
@end
다 상속 적 용법UITextField 에서 계승 할 하위 클래스 MyTextFeild 를 사용자 정의 하 는 동시에 에이전트 MyTextFeildDelegate 의 속성 을 다음 과 같이 정의 합 니 다.
@protocol MyTextFieldDelegate <NSObject>
//...
@property (nonatomic, weak) id <MyTextFeildDelegate> delegate;
이 때 잘못 보고 할 수 있 습 니 다.이 delegate 는 아버지 와 같은 delegate 의 협의 와 충돌 하기 때 문 입 니 다.하나의 해결 방법 은 프로 토 콜 의 다 중 계승 을 이용 하 는 것 이다.사용자 정의 프로 토 콜 을 부모 클래스 에서 계승 하 는 것 이다.
@protocol MyTextFieldDelegate <NSObject,UITextFieldDelegate>
//...
@property (nonatomic, weak) id <MyTextFeildDelegate> delegate;
3.확장OC 의 클래스 는 원래 다 상속 을 지원 하지 않 지만 어떤 면접 관 들 은 iOS 에서 다 상속 을 어떻게 실현 하 느 냐 고 묻는다.운행 시의 방법 외 에 또 하 나 는 협의의 다 중 계승 을 통 해 이 루어 지 는 것 이다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.