时类加载在目标C的静态初始化(Static initializer in Objective-C u

2019-09-17 16:04发布

我试图建立一些动态实例化从类名类似于Java的方法调用Class.forName是如何工作的,如一个对象

Class klass = Class.forName("MyClass");
Object obj = klass.instantiate(...

我没有看到在Objective-C的任何这样的行为,所以我想调用一个方法时加载的Objective-C类注册类。 基本上,我想调用注册我的课,如方法

+ (void)mystatic {
  [NSKeyedUnarchiver setClass:[self class] forClassName:"MyClass"]
}

有没有办法做到这一点在Objective-C在OS X平台?

谢谢。

Answer 1:

你想用NSClassFromString,就像这样:

Class klass = NSClassFromString(@"MyClass");
id obj = [[klass alloc] init];


Answer 2:

首先,有确实在Objective-C这样的等效 - 如@Louis建议的,使用NSClassFromString()。

第二,如果你想要像Java中静态构造函数,你可以做到这一点,以及与+初始化方法。 见这相关的SO问题 。



Answer 3:

你也可以说

Class myClass = [[NSBundle mainBundle] classNamed: @"MyClassName];
id myInstance = [[myClass alloc] init];

这通常案件有助于在运行时可能没有遇到你的类呢。



文章来源: Static initializer in Objective-C upon Class Loading