- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
首先让我说我有 Flash/AS3 的背景,我意识到它对大多数事情并不像 iPhone/Objective-C 那样严格。
我怀疑我的问题实际上也适用于 AS3,但让我把它作为与 Obj-c 相关的问题来问。为什么错误 EXC_BAD_ACCESS 和其他类似错误如此无用?我意识到这通常意味着某处内存管理不善,但为什么它不能告诉您更多有关该问题的信息。例如,为什么它不说“EXC_BAD_ACCESS,你试图在第 123 行传递指针 suchAndSuch,但是你是个白痴,因为你在第 69 行释放它所以它不再可用”?
我意识到我可以使用调试器获得更多关于我的错误发生位置的线索,但很多时候这只是略有帮助。例如,有时堆栈/线程/任何东西中的消息都不是我的代码。其他时候它是我的代码,但在堆栈顶部将是一条具有 4 个以上参数的消息,好的,感谢调试器,你将它缩小到 4 个可能的指针,为什么你不能告诉我是哪一个!?
我猜我只是因为我的背景而错过了一些基本的解释,不需要担心内存等问题。尽管在 AS3 开发中经常会发生同样神秘且沿用相同思路的错误。 “错误 #1009:无法访问空对象引用的属性或方法”,这几乎总是意味着您期望持有的变量实际上是空的。为什么它不告诉我哪个变量?!
最佳答案
因为 Objective-C 的运行时是故意的,非常小和简单。您实际上是在编写一个直接安装在金属上的 native 应用程序。该应用程序不知道您为什么收到 EXC_BAD_ACCESS,它只知道您尝试做某事而操作系统拒绝了。 EXC_BAD_ACCESS 表示您正在尝试访问操作系统未提供给您的内存空间。
在 Flash、Java、.NET 等中,有一个庞大而强大的运行时坐在那里为您运行您的应用程序。它有更多的上下文,并且对正在发生的事情了解更多。因此,这样的环境的一个好处是错误消息更加清晰,通常带有完整的堆栈跟踪。
Xcode 可以帮助您研究僵尸化您的对象。如果您再次尝试使用它们,它们不会重新分配,而是会变成僵尸并尖叫着血腥的谋杀。这有助于确定原因。
您可能还想查看 Technical Q&A或 Debugging Magic
关于objective-c - 为什么 EXC_BAD_ACCESS 如此无用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2060435/
哇,我一直在尝试让一个简单的 Android Twitter 应用程序运行,但这是不可能的。我来自 iOS 背景。我目前正在努力使这些工作: 来自 Marakana 的 MyTwitter 应用程序。
我只花了几个小时调试一个编译器错误,如果编译器的错误消息更有用,我可以立即修复这个错误。 我把它简化为一个简单的例子: template int f(int); template auto g(U
我想调整我的线条(两条)的大小,因为我觉得它们太瘦了。 下面的代码这样做了,但是为 size 创建了一个图例,这是无用的,因为 size 没有可以映射到它的变量。 qplot(date,value,d
如果我这样做 xset dpms 600 3600 7200 ,它在 10 点后使我的屏幕空白 几分钟的不事件。 问题 X11 怎么知道我闲了多久,我怎么才能访问这个 以编程方式空闲时间? 我无法获得
在调查 ConflictError ( see this previous question ) 时,我看到了很多 persistent.mapping.PersistentMapping 冲突。 具
我正在使用 PHP 和 jQuery 创建交互式白板应用程序。创建一个卡片组不是问题,也不是在页面上应用 Canvas 覆盖以便我可以在上面写字。我是一名业余编码员,完全是自学成才。这部分是学习更多的
我是网页设计的自学者,所以我可能会错过一些基础编码。 所以问题是 内容在一行中从右边溢出了 div。 代码如下 HTML
我在将 DRF SessionAuthentication 与定义为 ModelViewSets 的 View 一起使用时遇到问题。 “LoginRequiredMixin”在泛型 View 中工作正
这是我的一段代码:输出看起来像:12、44、55,我需要删除最后一个“,”,我尝试了所有方法。 while ((r = scanf("%d", &v)) > 0){ printf("%
我正在做这样的事情 http://jsfiddle.net/8ErSL/2/ 当您将鼠标悬停在任何文本框 (div) 上时,其中会出现一个小图标。 我想阻止图标的淡入淡出效果在我不小心将鼠标悬停在 d
我使用“wget --mirror [sitename]”启动了一个 wget 镜像,它是工作正常,但意外中断了该过程。 我现在想恢复镜像,但有以下警告: 如果 wget 已经下载了一个文件,我不想下
我有一个包含多个子项的 DOM 元素 (#installations),其中只有一个具有类 .selected。我需要选择此类和其余的前 3 个 (:not(.selected)) 并显示它们 - 目
我是一名优秀的程序员,十分优秀!