如何在NSString对象的objective-c中分配一个类?

JoB*_*324 2 iphone cocoa objective-c

我有一个PHP背景,但我开始学习Objective-C,以便我可以为iPhone开发应用程序.到目前为止事情进展顺利,但我有一个问题,在google搜索并挖掘了许多不同的论坛之后,我还无法找到并回答这个问题.

我的应用程序必须创建一些视图,每个视图都有自己的uinque标题栏.为了做到这一点,我的代码对于每个视图看起来都是这样的:

    xViewController = [ [ XViewController alloc ] init ];
    xNavController = [ [ UINavigationController alloc ]
        initWithRootViewController: xViewController
    ];
    xNavController.tabBarItem = [ [ UITabBarItem alloc ]
        initWithTitle: @"My Info"
        image: [ UIImage imageNamed: @"my_info.png" ]
        tag: 3
    ];  
Run Code Online (Sandbox Code Playgroud)

这样做,但我想要做的是创建一个方法,当一个字符串作为消息发送时将返回一个导航控制器,所以我不必为每个视图做所有这些.我遇到的问题是第一行需要根据作为字符串传递给它的类名来分配一个对象(即XViewController需要从传递给该方法的字符串中获取),但我不知道如何将字符串视为类名.我知道这是可能的,因为UIApplicationMain()可以使用字符串来调用app delegate类.我该怎么做?

我很抱歉,如果这一点没有意义,我还处于学习新语言的早期阶段!

Jas*_*oco 19

除了使用运行时,您只需使用Cocoa-touch方法即可:

NSString* theClassName = /* assume this exists */
Class theClass = NSClassFromString(theClassName);
NSObject* myObject = [[theClass performSelector:@selector(alloc)] init];
// do something with the new object instance
Run Code Online (Sandbox Code Playgroud)

  • 你不需要performSelector:,你可以只写[[theClass alloc] init]. (17认同)