Piszę metodę, która zwraca instancję widok kontrolera dla danej klasy widoku kontrolera, ale trzeba się upewnić, klasa przeszedł w rzeczywistości jest klasa widok kontroler:iOS: Jak sprawdzić daną klasę jest rodzajem klasy UIViewController?
- (UIViewController *)viewControllerWithClass:(Class)cls nibName:(NSString *)nibName
{
if (cls is kind of UIViewController subclass)
return [[[cls alloc] initWithNibNamed:nibName bundle:nil] autorelease];
return nil;
}
nie mogę porównać nazwę klasa od cls
nie może być UIViewController.
edit:
Niestety mam na myśli wewnątrz metody, w jaki sposób mogę sprawdzić czy cls
jest rodzajem UIViewController podklasy
Ponieważ jest to akceptowane odpowiedź chcę tylko wyjaśnić, że wszystkie inne odpowiedzi, które wykorzystują metodę isKindOfClass są złe, isKindOfClass nie działa dla obiektów typu „klasy” (jak CLS jest w tym przykład), [[klasa CDMyClass] toKindOfClass: [klasa CDMyClass]] zwraca NO także [CDMyClass isKindOfClass: [klasa CDMyClass]] zwraca NO. Aby użyć odbiornika, który jest typem klasy, powinieneś użyć isSubclassOfClass – LightMan