首页 > 不导入头文件,一样可以使用特定类创建对象?

不导入头文件,一样可以使用特定类创建对象?

建立一个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文件,没有在任何地方引用,请问系统是如何顺利找到并创建对象的?

【热门文章】
【热门文章】