建立一个table view,用plist记录控制器的类,点击一个cell,跳转到特定类型的控制器。发现了一个很奇怪的问题:即使不导入目标控制器的头文件,一样可以顺利跳转。
下面时代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// 获取cell字典
NSArray *cellArray = self.dataArray[indexPath.section][@"cells"];
NSDictionary *cellDict = cellArray[indexPath.row];
if (cellDict[@"targetViewController"]) {
// 获取控制器类名
NSString *className = cellDict[@"targetViewController"];
// 控制器类对象
Class targetViewControllerClass = NSClassFromString(className);
// 创建控制器
id targetViewController = [[targetViewControllerClass alloc] init];
[self.navigationController pushViewController:targetViewController animated:YES];
} else {
return;
}
}
只是单纯创建了目标控制器的.h和.m文件,没有在任何地方引用,请问系统是如何顺利找到并创建对象的?