iPhone应用程序在导航过程中崩溃

时间:2010-07-21 03:19:42

标签: iphone

我遇到了一个棘手的问题(因为我是个新人,所以对我很难)。我有一个我正在研究的表视图应用程序。它从表开始,然后向下导航到视图控制器。在该视图控制器中,我使用一些示例代码连接到一个按钮,该按钮将为iPhone地址簿添加联系人。

我的问题是,当用户导航回数据表时,应用程序崩溃了。有人可以提供任何建议吗?或者,也许有人可以给我发送代码进行审核?

更新*

以下是来自控制台的信息。

[Session started at 2010-07-20 22:51:46 -0500.]
2010-07-20 22:51:49.621 Infinite Possibilities[5882:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSPlaceholderString initWithString:]: nil argument'
*** Call stack at first throw:
(
 0   CoreFoundation                      0x025ff919 __exceptionPreprocess + 185
 1   libobjc.A.dylib                     0x0274d5de objc_exception_throw + 47
 2   CoreFoundation                      0x025b8078 +[NSException raise:format:arguments:] + 136
 3   CoreFoundation                      0x025b7fea +[NSException raise:format:] + 58
 4   Foundation                          0x0006869c -[NSPlaceholderString initWithString:] + 105
 5   Infinite Possibilities              0x00003b90 -[RootViewController tableView:didSelectRowAtIndexPath:] + 3405
 6   UIKit                               0x0034c718 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 1140
 7   UIKit                               0x00342ffe -[UITableView _userSelectRowAtIndexPath:] + 219
 8   Foundation                          0x00059cea __NSFireDelayedPerform + 441
 9   CoreFoundation                      0x025e0d43 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19
 10  CoreFoundation                      0x025e2384 __CFRunLoopDoTimer + 1364
 11  CoreFoundation                      0x0253ed09 __CFRunLoopRun + 1817
 12  CoreFoundation                      0x0253e280 CFRunLoopRunSpecific + 208
 13  CoreFoundation                      0x0253e1a1 CFRunLoopRunInMode + 97
 14  GraphicsServices                    0x02e642c8 GSEventRunModal + 217
 15  GraphicsServices                    0x02e6438d GSEventRun + 115
 16  UIKit                               0x002e8b58 UIApplicationMain + 1160
 17  Infinite Possibilities              0x00002834 main + 102
 18  Infinite Possibilities              0x000027c5 start + 53
)
terminate called after throwing an instance of 'NSException'

1 个答案:

答案 0 :(得分:0)

通常崩溃意味着您遇到某种内存问题或调用未定义的函数(发送接收方无法回答的消息)。

是否正在尝试从指向已发布的对象的指针读取? 您是否尝试向未回复的对象发送消息?

好消息是你有很多好的工具可以确切地知道它是什么:

首先,打开控制台(Shift + Command R),查看应用程序崩溃时是否有消息或堆栈跟踪。如果没有消息,请运行调试器(Shift + Command Y)并查看它在崩溃时停止的位置。

最后,如果您看到XCode的状态栏,它会告诉您有关崩溃的一些信息(发送有关崩溃的消息,可能是EXEC_BAD_ADDRESS或其他一些事情。

可悲的是,如果没有您的代码或任何此类信息,我可以做的就是帮助您。我建议不仅要复制和粘贴,而且要真正理解代码应该做什么,还要学习如何调试代码。

为了获得良好的资源,我会推荐Itunes U Standford Iphone开发课程和/或阅读一本关于它的好书(我读过Head First Iphone书,我喜欢这个系列,但我并不喜欢这个系列)。