Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用存储在变量中的类名调用类方法?_Objective C_Ios - Fatal编程技术网

Objective c 使用存储在变量中的类名调用类方法?

Objective c 使用存储在变量中的类名调用类方法?,objective-c,ios,Objective C,Ios,我可能想得太多了/浪费时间试图避免一些条件代码-所以我想我会问。我见过一些其他问题@这类问题,但他们使用的是php或其他语言 最基本的,我可以这样做吗(我知道语法是错误的): 我为什么要这样做?避免一堆条件句。我有一个应用程序,用户可以从一系列播放“类型”中进行选择,每种类型都由“播放”类的一个子类处理。将类名存储在数组中,然后在进行选择时(从表视图)调用所选类,创建其实例,等等,这样会很方便 这是可能的还是我在这里把自己挖了个洞?第一行的正确语法是: Class var = NSClassFr

我可能想得太多了/浪费时间试图避免一些条件代码-所以我想我会问。我见过一些其他问题@这类问题,但他们使用的是php或其他语言

最基本的,我可以这样做吗(我知道语法是错误的):

我为什么要这样做?避免一堆条件句。我有一个应用程序,用户可以从一系列播放“类型”中进行选择,每种类型都由“播放”类的一个子类处理。将类名存储在数组中,然后在进行选择时(从表视图)调用所选类,创建其实例,等等,这样会很方便


这是可能的还是我在这里把自己挖了个洞?

第一行的正确语法是:

Class var = NSClassFromString(@"Playback_Up");
其余的都很好,我使用这种技术的频率比你想象的要高

(当然,除了“Playback_Up”不应该是类的名称。)



编辑:注意下面保罗的评论。如果可以在编译时硬编码类,则最好使用
+class

或者
[Playback\u Up class]
?是的,也可以(如果名称是硬编码的,则更好)
NSClassFromString
只允许您处理变量字符串,如果您从其他地方读取它,这很好。@skinnyTOD如果您正朝相反的方向去做一点点额外的工作,它也很有用
NSStringFromClass([MyClass])因此,如果您更改类的名称,Xcode实际上可以重构。感谢所有人的帮助!嗯。。。为什么不给一个类命名为“Playback_Up”:-)类名不应该包含下划线。用Cocoa命名是一件非常重要的事情,系统的某些部分依赖于正确的命名。即使去掉下划线,“PlaybackUp”也不是名词。使用普通的类命名约定,它建议“回放”修改“向上”,这更令人困惑。考虑NSMutableArray,NSulLink,UIViewController等。
Class var = NSClassFromString(@"Playback_Up");