我遇到了一个奇怪的问题,我试图动态创建我之前设置和存储的Class
属性(arrayClass
)的新实例:
NSObject *instance = [[self.arrayClass alloc] init];
if ( ![instance isKindOfClass:self.arrayClass] )
NSLog(@"Say what?!");
如果我中断并记录self.arrayClass
,它会在控制台上显示正确的类(在本例中为Store
),但是当我尝试动态创建它的实例并记录类型时在实例中,它将其类显示为__NSMallocBlock__
。
到底发生了什么事?
答案 0 :(得分:2)
事实证明这确实是一个非常愚蠢的错误。我不知何故在我试图实例化的类中创建了一个空init
方法,但忘记了实现它(甚至返回任何东西)。奇怪的是,编译器并没有抱怨这一点。
这里是空的init方法:
- (instancetype)init {
}
显然,由于我没有定义或返回self
,运行时并没有从预期的init
中获取对象。奇怪的是,所做的得到的是__NSMallocBlock__
类型,并尝试对该对象做任何事情都会导致崩溃。