我遇到了一个棘手的问题(因为我是个新人,所以对我很难)。我有一个我正在研究的表视图应用程序。它从表开始,然后向下导航到视图控制器。在该视图控制器中,我使用一些示例代码连接到一个按钮,该按钮将为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'
答案 0 :(得分:0)
通常崩溃意味着您遇到某种内存问题或调用未定义的函数(发送接收方无法回答的消息)。
是否正在尝试从指向已发布的对象的指针读取? 您是否尝试向未回复的对象发送消息?
好消息是你有很多好的工具可以确切地知道它是什么:
首先,打开控制台(Shift + Command R),查看应用程序崩溃时是否有消息或堆栈跟踪。如果没有消息,请运行调试器(Shift + Command Y)并查看它在崩溃时停止的位置。
最后,如果您看到XCode的状态栏,它会告诉您有关崩溃的一些信息(发送有关崩溃的消息,可能是EXEC_BAD_ADDRESS或其他一些事情。
可悲的是,如果没有您的代码或任何此类信息,我可以做的就是帮助您。我建议不仅要复制和粘贴,而且要真正理解代码应该做什么,还要学习如何调试代码。
为了获得良好的资源,我会推荐Itunes U Standford Iphone开发课程和/或阅读一本关于它的好书(我读过Head First Iphone书,我喜欢这个系列,但我并不喜欢这个系列)。