iphone应用程序崩溃,没有任何控制台错误或崩溃日志:

时间:2010-12-05 08:21:03

标签: iphone objective-c ios4

我是新手。我正在尝试构建一个测验应用程序,而我的应用程序在测验的第一次迭代运行正常,它退出时没有任何控制台错误在第二次运行。修改以下所有代码以供参考。

似乎当我重新运行测验时, - (void)下面的loadNextWord函数确实执行但之后没有任何反应。

请帮忙!

谢谢!

从调试器转储:

我在主func中的第14行是int retVal = UIApplicationMain(argc,argv,nil,nil);

#import <UIKit/UIKit.h>

 int main(int argc, char *argv[]) {

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}

Program received signal:  “EXC_BAD_ACCESS”.
(gdb)
#0  0x025f0907 in objc_msgSend ()
#1  0x05f28da0 in ?? ()
#2  0x023cfc9d in _CFAutoreleasePoolPop ()
#3  0x0001ee67 in -[NSAutoreleasePool release] ()
#4  0x002cfe7f in _UIApplicationHandleEvent ()
#5  0x02d73822 in PurpleEventCallback ()
#6  0x02474ff4 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#7  0x023d5807 in __CFRunLoopDoSource1 ()
#8  0x023d2a93 in __CFRunLoopRun ()
#9  0x023d2350 in CFRunLoopRunSpecific ()
#10 0x023d2271 in CFRunLoopRunInMode ()
#11 0x02d7200c in GSEventRunModal ()
#12 0x02d720d1 in GSEventRun ()
#13 0x002d3af2 in UIApplicationMain ()
#14 0x00002880 in main (argc=1, argv=0xbfffef94) at /Users/vbhardwaj/Documents/ObjectiveC/FinalProject/FunWords/main.m:14

2 个答案:

答案 0 :(得分:8)

查看堆栈跟踪,您会看到

[NSAutoreleasePool release]

这告诉我你已经释放了太多次的对象,例如:

NSString *string = [NSString stringWithString:@"Hello"]; // This string is autoreleased
[string release]; // This line won't crash but is WRONG!

以上代码不会立即崩溃,但字符串将被释放并释放。但是,因为它也是自动释放的,所以自动释放池将尝试在将来的某个时候再次释放它。你不知道什么时候会发生随机的崩溃。

你可能做过类似的事情:)

答案 1 :(得分:0)

问题出在多个版本上。

为了能够正确调试您的代码,甚至包含文件都是必要的。 我可以看到你在代码中发布了wordImageView。 你不应该这样做。 你应该做的是利用属性并做类似

的事情
self.wordImageView = nextImageView;
[nextImageView release];

而不是

[wordImageView release]; // release the flagView's memory
wordImageView = nextImageView; // reassign flagView to the new view

您也可以随时使用自动释放池,但这会带来内存惩罚问题。

不过,虽然问题似乎是在主循环中,但它并不存在。这只是清理自动释放池的位置,并且出现问题。

在任何情况下,可能都要看一下你的代码并确保所有'alloc'都由同一个选择器中同一个对象的'release'处理。