2014-06-15 3 views
1

누군가가 이것이 목표 c에서 유형 캐스팅을 수행하는 올바른 방법인지 알려주십시오.목표 C에서 유형 캐스팅

"DataViewController"의 인스턴스가 될 수있는 "myObject"개체가 있습니다. 그래서 "updateView"메서드를 호출해야합니다.

if (myObject respondsToSelector:@selector(updateView:)]) 
{ 
    [(DataViewController *)myObject updateView:data]; 
} 

답변

0

는이 경우에 캐스트가 필요하지 않습니다 : 당신은 선택의 길을 시작한 이후, 당신은뿐만 아니라 일관성을 위해 performSelector:withObject:를 호출 할 수 있습니다

if (myObject respondsToSelector:@selector(updateView:)]) { 
    [myObject performSelector:@selector(updateView:) withObject:data]; 
} 

이것은보다 일반적인 접근 방법이다, 왜냐하면 적절한 방법이있는 한 DataViewController이 아닌 다른 유형의 객체에 updateView을 실행할 수 있기 때문입니다. 당신은 유형 기반 솔루션을 사용하려는 경우

,이 같은 isKindOfClass: 방법을 사용할 수 있습니다

if (myObject isKindOfClass:[DataViewController class]]) { 
    DataViewController *ctrl = (DataViewController)myObject; 
    [ctrl updateView:data]; 
} 
+0

감사의 당신의 도움을! – Vincenzo