【问题标题】:NSClassFromString IdeaNSClassFromString 理念
【发布时间】:2011-08-01 13:33:05
【问题描述】:

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

我希望能够实现的是以下...

NSClassFromString(stringType) *pageController = nil;

而不是以下...

UIViewController *pageController = nil;

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

MPLandscapeImage *pageController = nil;

这可能吗?如果可以,我该如何完成所需的内容?

【问题讨论】:

    标签: objective-c cocoa-touch uiviewcontroller nsstring nsobject


    【解决方案1】:

    是的。这样做。

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

    【讨论】:

    • 不幸的是,通过使用 id 类型它不能按需要工作!我确信应该有另一种方法来实现这一点......
    • 使用上面的方法搞定了,这是id 类型处理视图的方式的问题。
    【解决方案2】:

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

    但是,我会问您要完成什么,因为绕过类型系统通常是一个坏主意(tm)。

    【讨论】:

      【解决方案3】:

      您正试图在 Objective C 中使用泛型/模板。这行不通。请改用 id 类型,它更适用于您正在尝试做的事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-24
        • 1970-01-01
        • 1970-01-01
        • 2014-08-25
        • 2015-04-26
        • 2017-04-16
        相关资源
        最近更新 更多