objective-c – 如何将类名作为参数传递给可可中的对象工厂?

objective-c – 如何将类名作为参数传递给可可中的对象工厂?,第1张

概述我在一个对象工厂工作,以跟踪一小部分对象。对象可以是不同的类型,但它们都将响应createInstance并重置。这些对象不能从公共基类派生,因为它们中的一些将不得不从NSView和NSWindowController等内置可可类派生。 我想通过简单地将所需的类名传递到我的工厂来创建任何合适的对象的实例,如下所示: myClass * variable = [factory makeObjectO 我在一个对象工厂工作,以跟踪一小部分对象。对象可以是不同的类型,但它们都将响应createInstance并重置。这些对象不能从公共基类派生,因为它们中的一些将不得不从NSVIEw和NSWindowController等内置可可类派生。

我想通过简单地将所需的类名传递到我的工厂来创建任何合适的对象的实例,如下所示:

myClass * variable = [factory makeObjectOfClass:myClass];

makeObjectOfClass:方法看起来像这样:

- (ID)makeObjectOfClass:(CLASSname)classname{    assert([classname instancesRespondToSelector:@selector(reset)]);    ID newInstance = [classname createInstance];    [managedobjects addobject:newInstance];    return newInstance;}

有没有办法将类名传递给一个方法,就像我已经使用上面的makeObjectOfClass的(CLASSname)classname参数一样?

为了完整起见,这里是为什么我要管理所有的对象。我想通过调用[出厂设置]来一次性重置完整的对象集合。

- (voID)reset{    [managedobjects makeObjectsPerformSelector:@selector(reset)];}
解决方法 您可以使用以下函数将字符串转换为类:NSClassFromString

Class classFromString = NSClassFromString(@"MyClass");

在你的情况下,你最好直接使用Class对象。

MyClass * variable = [factory makeObjectOfClass:[MyClass class]];- (ID)makeObjectOfClass:(Class)aClass{    assert([aClass instancesRespondToSelector:@selector(reset)]);    ID newInstance = [aClass createInstance];    [managedobjects addobject:newInstance];    return newInstance;}
总结

以上是内存溢出为你收集整理的objective-c – 如何将类名作为参数传递给可可中的对象工厂?全部内容,希望文章能够帮你解决objective-c – 如何将类名作为参数传递给可可中的对象工厂?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1035513.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存