如果之前发布过这个问题,我找不到它。
我正在尝试在NSOperation的子类的初始化方法中分配和初始化NSString的实例(用于NSOperationQueue)。 NSString指针是一个ivar(不是属性)。
程序因“EXC_BAD_ACCESS(code = EXC_I386_GPFLT)”而崩溃。
为了隔离问题,我已经分离了alloc和init函数。主线程正在崩溃:
m_myString = [NSString alloc];
代码位于“if”块中:
if (someCondition)
{
m_myString = [NSString alloc];
m_myString = [m_myString initWithCString:aCharPointer encoding:NSASCIIStringEncoding];
}
else
{
m_myString = [NSString alloc];
m_myString = [m_myString initWitCString:aDifferentCharPointer encoding:NSASCIIStringEncoding];
}
检查线程显示它在objc_release上崩溃。我不明白为什么会在分配方法中的对象上调用release,但似乎就是这种情况......
值得一提的是,我在if块之前的同一方法中成功分配并初始化另一个实例变量NSString。
之前是否有其他人遇到此问题,如果是,您是如何解决的?
我很乐意根据要求提供更多信息。