Cocoa惯性思维调试一例

简介:

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


人总有惯性思维,在编程调试里也不例外.你总以为错误是显然的那一个,可是结果却不是.

在stroyboard中建立2个UIView控制器,如果按下第一个控制其中的reg按钮则会显示第二个控制器视图:

- (IBAction)reg:(id)sender {
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *regVC = [sb instantiateViewControllerWithIdentifier:@"registerViewController"];
    regVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:regVC animated:YES completion:^{
        NSLog(@"present Modal View");
    }];
}

更简单的一个方法,然而在运行时,注意是在点击reg按钮时App Crash掉了,错误关键字如下:

send unrecognized selector to instance 0xXXXXXXXX

其中instance就是self本身.想当然的认为肯定是presentViewController:方法导致的,调试时发现App在调用presentViewController:本身并没有出错,而是在reg方法返回后才崩掉.这时还是惯性思维,丝毫没有察觉…

结果错误和presentViewController:没有半毛钱关系,是由于reg按钮上设置了2个回调方法,其中一个已经不存在了…

好吧,事后回过头来看看出错信息:

  • 首先,报的错是self中未找到presentViewController方法,但是self是UIViewController的实例,是不可能没有这个方法的
  • 然后App在presentViewController调用后都没有出错,那么显然由这个方法负责的可能性会很低

由以上2条可以清楚推断出原因不在presentViewController方法,而是另一个不存在self中的方法,到哪里去找显而易见了…

相关文章
|
20天前
|
安全 搜索推荐 Android开发
揭秘iOS与Android系统的差异:一场技术与哲学的较量
在当今数字化时代,智能手机操作系统的选择成为了用户个性化表达和技术偏好的重要标志。iOS和Android,作为市场上两大主流操作系统,它们之间的竞争不仅仅是技术的比拼,更是设计理念、用户体验和生态系统构建的全面较量。本文将深入探讨iOS与Android在系统架构、应用生态、用户界面及安全性等方面的本质区别,揭示这两种系统背后的哲学思想和市场策略,帮助读者更全面地理解两者的优劣,从而做出更适合自己的选择。
|
3月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
137 3
|
3月前
|
开发者 Ruby
神秘编程魔法惊现!Ruby 元编程究竟隐藏着怎样的力量?竟能让代码自我进化!
【8月更文挑战第31天】《Ruby元编程:让代码自我进化》介绍了Ruby元编程的魅力,通过动态修改代码结构和行为,实现代码自我进化。文章通过实例展示了如何使用`class_eval`动态添加属性和方法,以及通过别名修改现有方法。此外,还介绍了利用模块实现代码复用和扩展。元编程为开发者提供了极大的灵活性和创造力,使代码更加动态高效。
29 0
|
4月前
|
Swift iOS开发 开发者
iOS应用开发:SwiftUI高级技巧
【7月更文挑战第21天】SwiftUI以其声明式语法、跨平台一致性、强大的动画和状态管理特性,为iOS应用开发带来了革命性的变化。通过掌握SwiftUI的高级技巧,开发者可以构建出更加高效、美观和流畅的应用。希望本文能够帮助你更好地理解和应用SwiftUI,从而在iOS应用开发的道路上走得更远。
|
6月前
|
程序员 Python
揭秘单步调试:掌握这一技能让你代码无懈可击
揭秘单步调试:掌握这一技能让你代码无懈可击
55 0
|
6月前
|
NoSQL JavaScript 前端开发
断点调试:开发者的时空穿梭术,提升编程效率必备技巧
断点调试:开发者的时空穿梭术,提升编程效率必备技巧
45 0
|
11月前
|
人工智能 图形学
Unity物理系统脚本编程(上)
Unity物理系统脚本编程(上)
|
11月前
|
算法 图形学
Unity物理系统脚本编程(下)
Unity物理系统脚本编程(下)
|
API 图形学
【2023unity游戏制作-mango的冒险】-前六章API,细节,BUG总结小结
【2023unity游戏制作-mango的冒险】-前六章API,细节,BUG总结小结
128 0
|
人工智能 程序员 图形学
一文足矣:Unity&行为树(三)
一文足矣:Unity&行为树
251 1
一文足矣:Unity&行为树(三)