Tôi viết một phương thức trả về một trường hợp quan điểm điều khiển cho một lớp học xem điều khiển được đưa ra, nhưng tôi cần phải chắc chắn rằng các lớp học được thông qua năm thực sự là một lớp view controller:iOS: Làm thế nào để kiểm tra một lớp nhất định là một loại lớp 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;
}
Tôi không thể so sánh tên của lớp học kể từ cls
có thể không phải là UIViewController.
chỉnh sửa:
Xin lỗi tôi có nghĩa là bên trong phương pháp, làm thế nào để kiểm tra xem cls
là một loại phân lớp UIViewController
Vì đây là câu trả lời được chấp nhận, tôi chỉ muốn làm rõ rằng tất cả các câu trả lời khác sử dụng phương pháp isKindOfClass là sai, isKindOfClass không hoạt động cho các đối tượng có loại 'Lớp' (như cls là trong này ví dụ), [[CDMyClass class] isKindOfClass: [CDMyClass class]] trả về NO cũng [CDMyClass isKindOfClass: [CDMyClass class]] trả về NO. Để sử dụng một bộ thu mà là một loại Class bạn nên sử dụng isSubclassOfClass – LightMan