分配

时间:2015-10-31 04:25:27

标签: objective-c cocoa automatic-ref-counting exc-bad-access

如果之前发布过这个问题,我找不到它。

我正在尝试在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。

之前是否有其他人遇到此问题,如果是,您是如何解决的?

我很乐意根据要求提供更多信息。

0 个答案:

没有答案