NSString stringWithFormat:与C数组?
我在写一个计算Jacobi算法的程序。它是用Objective-C编写的,因为它在Mac上运行,但大部分是用标准C编写的。我使用了一个二维C数组和一个包含5个标签的NSArray
。NSString stringWithFormat:与C数组?
下面的代码产生一个错误EXC_BAD_ACCESS
:
任何帮助吗?
编辑
这里就是我init
resultLabels
:
resultLabels = [[NSArray alloc] initWithObjects:result11, result22, result33, result44, result55, nil];
最有可能的是,您正在引用已发布的对象。你的NSArray或objectAtIndex:在那一点上是否为零?你能显示你实例化这些对象的行吗?
向nil发送消息不会导致BAD_ACCESS错误。 – 2010-04-16 17:28:36
paull - true;我的意思是内存地址0x0,而不是零。感谢您指出了这一点。 – Don 2010-04-16 17:47:30
挑剔的细节:零和地址0x0是相同的,都不会导致访问错误;消息到零返回零。 – 2010-04-16 18:08:30
如果你在该行的错误,然后要么resultsLabels
被释放,或者在i
的对象。
我的数组中的对象是一个字符串,而不是您的整数的整数。 – 2010-04-16 18:10:16
对不起,你是对的。一次处理两个项目会让人感到困惑! ;) – 2010-04-16 18:11:56
这不是你的失败者的来源,但%g
格式的代码是双打而不是整数;你想%d。
数组中的项目将被数组自动保留(Foundation集合中的对象始终由集合保留),因此您不需要向它们发送额外的-retain
消息。所以看起来好像resultLabels
可能会在崩溃发生之前的某个地方发布。
其实,我简化了。这真是一个'双',后来改变了。 'init'方法中的'retainCount'是1,但是当它以不同的方法调用时,它会崩溃。我认为如果一个消息被发送到一个“无”对象,就没有任何反应,这就是为什么这是如此令人费解。 – 2010-04-16 18:36:02
什么都不会发生,并且您在此问题的其他地方发表的评论显示您的NSArray指向0x4。所以我猜想你有可能以某种方式将你的整数指定给数组指针。 – 2010-04-16 19:33:47
你确定在'martix [i] [i]'的所有可能值都是非'nil'值? – 2010-04-16 17:22:23
是的,所有东西都被声明为一个int [0到9]。 – 2010-04-16 17:23:03
我认为你误解了Squeegy的问题(以及Don和paull的问题):将['resultLabels objectAtIndex:i] setStringValue:resultString]行分割成多行并检查每个对象的nil值:'NSArray * labels = resultLabels; id object = [labels objectAtIndex:i]; NSTextField * textField =(NSTextField *)对象; [textField setStringValue:resultString];' – 2010-04-16 17:30:09