IOS/Objective-C
[Objective-C] 동적 타입과 바인딩
Haru_29
2023. 3. 9. 21:08
- 정적 타입: 코드 작성시 타입을 명시
- BOOL boolVar;
- int intVar;
- NSString *strVar;
- 동적 타입: 코드 작성시 타입을 명시하지 않음
- id 사용, 포인터 형이고 *을 사용하지 않음
id dyanmicTypeVar;
-(void)dynamicTypeMethod:(id)arg;
- 바인딩: 참조와 구현이 연결
- 포인터 변수가 객체와 연결
- 메소드 호출 코드와 메소드 구현부 연결
- 정적 바인딩: 컴파일 시간에 결정
- 동적 바인딩: 런타임(runtime)
- Objective-C -> 동적 바인딩 언어
- 포인터가 가르키는 객체의 클래스 알아내기
-(Class)superclass;
-(Class)class;
- 클래스에서 생성된 객체 알아내기
- (BOOL)isMemberOfClass:(Class)aClass;
- (BOOL)isKindOfClass:(Class)aClass;
- Rectangle 클래스 객체인지 알아내기
if([rect isMemberOfClass:[Rectangle class]) {
NSLog(@"Rectangle 클래스");
}
else {
NSLog(@"Rectangle 클래스 아님");
}