iOS指南系列:如何解决奔溃问题-关于内存访问续
2012-11-07 16:58
561 查看
Push the Button
现在的应用程序工程 - 或者至少是没有问题的开始 - ,点击该按钮运行。Woah! 程序又崩溃了 SIGABRT ,还在 main.m.
在调试窗格中的错误消息是:
Problems[6579:f803] -[MainViewController buttonTapped]: unrecognized selector sent to instance 0x6e44850 |
当然,你见过这个错误讯息。”一种方法被称为不存在的“。这一次的目标对象是MainViewController,看起来是正确的操作方法之一,因为通常包含按钮在视图控制器。如果你在MainViewController.h看,IBAction方法也确实是存在的:
- (IBAction)buttonTapped:(id)sender; |
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MainViewController buttonTapped]: unrecognized selector sent to instance 0x6b4b1f0'
这次看到多一个信息,参数不合法!
或者说问题就是它吗?错误消息说,方法的名称是buttonTapped,但MainViewController有方法命名buttonTapped:,注意在最后一个冒号,因为这个方法接受一个参数(名为“sender”)。另一方面,从错误信息的方法的名称,不包括冒号,因此不带任何参数。该方法的签名,而似乎看起来像这样:
- (IBAction)buttonTapped; |
你可以看到的storyboard,按钮连接inspector(MainviewController-buttontapped):
首先断开触摸内部事件(点击小X),然后将它连接主视图控制器,但这个时候选择的buttonTapped的方法是现有的。链接后,请注意,在连接inspector,现在 方法的名称后有个小冒号(表明是带参数的)。
运行的应用程序,再点击按钮。什么?在main函数中,你又得到“无法识别的selector”的消息,虽然这一次正确识别作为buttonTapped:的 方法
Problems[6675:f803] -[MainViewController buttonTapped:]: unrecognized selector sent to instance 0x6b6c7f0 |
not found.
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MainViewControllerbuttonTapped:]: unrecognizedselector sent to instance 0x6d37a00'
轮到检查 MainViewController.m. 看起来似乎有定义(我也没有发现这个拼写错误) buttonTapped: 但是等一下…
好像不对头啊:
- (void)butonTapped:(id)sender |
- (void)buttonTapped:(id)sender |
Note: This sort of thing is easy to catch if
you’re paying attention to the compiler warnings. Personally, I treat all warnings as fatal errors (there is even an option for this in the Build Settings screen in Xcode) and I’ll
fix each and every one of them before running the app. Xcode is pretty good at pointing out silly mistakes such as these, and it’s wise to pay attention to these hints.
我的一个结论:
1. 绝对重视编译错误,fix他们
2. 多阅读代码
3. 把告警的地方的信息展开,看详细内容
忘了:检查inspector/outlet/view/event connection
相关文章推荐
- iOS指南系列:如何解决奔溃问题-关于内存访问
- iOS指南系列:如何解决奔溃问题-关于内存访问续
- iOS指南系列:如何解决奔溃问题-关于内存访问
- iOS指南系列:如何解决奔溃问题-关于内存访问续2
- iOS指南系列:如何解决奔溃问题-关于内存访问续
- iOS指南系列:如何解决奔溃问题-深入调试
- iOS指南系列:如何解决奔溃问题
- iOS指南系列:如何解决奔溃问题
- iOS指南系列:如何解决奔溃问题 .
- iOS指南系列:如何解决奔溃问题
- iOS指南系列:如何解决奔溃问题-深入调试
- iOS指南系列:如何解决内存问题 深入调试 结尾篇
- iOS 解决上传100张图片内存奔溃问题
- iOS指南系列:关于进度条的问题
- iOS开发 iOS10访问权限的配置(解决访问奔溃问题,包括相册/相机等)
- iOS下CLLocationManager多次定位引起内存访问错误的问题解决
- 解决关于ios访问相机闪退问题
- 关于如何取消访问https时的提示:“此网站的安全证书存在问题”的解决方法
- IOS上解决内存越界访问问题