需要建议NSClassFromString

RAG*_*poR 1 iphone objective-c

根据这段代码,我不了解NSClassFromString

我怎么知道"viewControllerName"可以从其他来源使用它吗?

你能告诉我更多关于如何使用NSClassFromString的信息吗?

UIViewController *viewController = [[NSClassFromString(viewControllerName) alloc] init];
Run Code Online (Sandbox Code Playgroud)

Jas*_*ien 8

NSClassFromString基于它的名称返回一个Objective-C类作为字符串(函数名称实际上是自解释的)...

您传入的字符串是您要创建的类的名称,例如:

如果你有一个名为MyViewController的类,并且你想从该字符串中获取一个Objective-C类,那么你可以使用这个函数,就像 NSClassFromString(@"MyViewController");

通常,在测试可能无法使用的类名时,您只需执行此操作,例如,在编写同时针对iPhone OS 2.0和3.0的代码时.

如果您使用该类作为符号,如果该类在以前版本的操作系统上不存在,它将崩溃.所以你使用这个函数来返回一个使用该字符串的类,如果成功返回了类,你知道它是否存在并且使用是安全的,否则如果它返回nil,那么该类不存在,你不应该使用它和你的程序应该采取措施在这种情况下正常行事.

  • @RAGOpoR:听起来你正试图理解Apple的MailComposer示例应用程序.该项目旨在展示如何在定位2.x时使用OS 3.x功能.它们在MessageUI框架中进行弱链接,其中定义了MFMailComposeViewController,并使用NSClassFromString检查运行应用程序的OS上是否存在MFMailComposeViewController.如果是这样,他们继续使用它. (2认同)