다크호스 프로그래머 - objective - C 학습 노트 와 같은 본질 과 SEL 유형
2144 단어 Objective-C 기초
클래스 의 본질
1. 유형의 본질
클래스 의 본질 도 하나의 대상 (클래스 대상) 이 고 Class 유형 입 니 다.
【 클래스 대상 】
1) 클래스 대상 은 프로그램 이 실 행 될 때 항상 존재 합 니 다.
2) 클래스 대상 은 일종 의 데이터 구조, 저장 클래스 의 기본 정보: 클래스 크기, 클래스 이름, 클래스 버 전 정보, 메시지 와 함수 의 맵 표 등
2. 클래스 대상 은 어떻게 획득
1) 인 스 턴 스 대상 을 통 해 가 져 오기
예 를 들 면:
Animal *ani = [Dog new];
Animal *ani2 = [Dog new];
Class ac = [ani class];
Class ac2 = [ani2 class];
NSLog(@"ac = %p", ac);
NSLog(@"ac2 = %p", ac2);
NSLog(@"Dog = %p", [Dog class]);
인쇄 결과:
2015-10-04 22:38:57.712VariableClass[2302:303] ac = 0x100001330
2015-10-04 22:38:57.714VariableClass[2302:303] ac2 = 0x100001330
2015-10-04 22:38:57.716VariableClass[2302:303] ac2 = 0x100001330
2) 클래스 이름 으로 가 져 오기
1 참조) 에서 NSLog (@ "Dog =% p", [Dog class]);
3. 유형 대상 의 사용
예 를 들 면:
Animal *ani = [Dog new];
Class ac = [ani class];
Dog *dog = [ac new];
[dog bark];
인쇄 결과:
2015-10-04 22:43:38.948 VariableClass[2355:303] Wangwang...
분석 결과:
클래스 대상 ac 는 Dog 클래스 로 사용 할 수 있 으 며, Dog 인 스 턴 스 대상 을 만 들 수 있 습 니 다.
2. SEL 유형
SEL: 전 과정 selector 표시 방법의 저장 위치
방법 을 찾 는 과정:
1) 먼저 SEL 형식의 데이터 로 방법 을 봉 한다.
2) SEL 데이터 에 따라 대응 하 는 방법 주 소 를 찾 습 니 다.
3) 방법 주소 에 따라 해당 하 는 방법 호출
4) [주의] 이 작업 과정 에서 캐 시가 있 습 니 다. 처음 찾 았 을 때 하나씩 찾 았 고 성능 이 소모 되 었 습 니 다. 그 다음 에 사용 할 때 바로 사용 합 니 다.
[주의] SEL 은 사실 방법 에 대한 포장 입 니 다. 방법 을 SEL 유형의 데 이 터 를 포장 하고 해당 하 는 방법 주 소 를 찾 으 면 방법 주 소 를 찾 으 면 호출 방법 을 사용 할 수 있 습 니 다. 이런 것들 은 모두 운행 시의 특성 입 니 다. 메 시 지 를 보 내 는 것 은 SEL 을 보 낸 다음 에 SEL 에 따라 주 소 를 찾 고 호출 방법 입 니 다.
예 를 들 면:
Dog *dog = [Dog new];
[dog bark];
SEL sel = @selector(bark);
[dog performSelector:sel];
인쇄 결과:
2015-10-04 23:02:58.856 VariableClass[2437:303] Wangwang...
2015-10-04 23:02:58.859 VariableClass[2437:303] Wangwang...