Objective c NSClassFromString思想

Objective c NSClassFromString思想,objective-c,cocoa-touch,uiviewcontroller,nsstring,nsobject,Objective C,Cocoa Touch,Uiviewcontroller,Nsstring,Nsobject,我目前正在尝试从NSClassFromString(NSString*)方法创建对象 我希望能够实现以下目标 NSClassFromString(stringType) *pageController = nil; UIViewController *pageController = nil; 而不是下面的 NSClassFromString(stringType) *pageController = nil; UIViewController *pageController = nil;

我目前正在尝试从NSClassFromString(NSString*)方法创建对象

我希望能够实现以下目标

NSClassFromString(stringType) *pageController = nil;
UIViewController *pageController = nil;
而不是下面的

NSClassFromString(stringType) *pageController = nil;
UIViewController *pageController = nil;
换句话说,我想使用正确的类,而不是使用UIViewController。我希望能够实现上述目标,而不必键入确切的类。 我通常会这样写,但由于应用程序的扩展,它需要更改

MPLandscapeImage *pageController = nil;

这可能吗?如果可能的话,我如何才能完成所需的工作?

你真的不能这样做。您可以为此使用id类型

然而,我想问你想要实现什么,因为绕过类型系统通常是个坏主意(tm)

是的。这样做

Class cls = NSClassFromString(stringType);
// You have to use id here
id pageController = nil;
// And later
pageController = [[cls alloc] init];

你试图在目标C中使用泛型/模板,这是行不通的。改为使用id类型,它更适用于您正在尝试的操作。

使用id类型时,它无法按需要工作!我相信应该有另一种方法来实现这一点……使用上面的方法,一切都正常了,
id
类型处理视图的方式存在问题。