【问题标题】:Memory release unexpectedly内存意外释放
【发布时间】:2010-10-12 22:29:52
【问题描述】:

我陷入了一个奇怪的困境。我有一个类 clsA ,它有一些方法。我正在其他类中创建 ClsA 的实例并访问 clsA 的方法。我已经在头文件中声明了 clsA 的对象,我正在同时编写这两行。

clsAobj = [[clsA alloc] init];
[clsAobj someemethod];

问题是,在执行第一行 Debugger 后进行调试时,会显示分配给 clsAobj 的内存,但在执行第二行之后,分配的内存会丢失并变为 0x0 。在访问 ClsA 的任何方法时都是如此。

任何人都可以帮助我至少理解这个困境吗?谢谢。

【问题讨论】:

  • 你的init方法是什么?您需要在 clsA 类中添加更多详细信息。

标签: iphone memory-leaks


【解决方案1】:

如果不了解 clsA 和 someemethod 是如何实现的,就很难说发生了什么。我最好的猜测是 clsA 的 init 或 alloc 方法返回 nil(使 clsAobj 在第一行而不是第二行之后为 nil),但如果没有看到更多代码,很难给你更详细的反馈。

【讨论】:

    【解决方案2】:

    您是否在调试优化代码?这可以解释你所看到的;编译器已经优化掉了这个引用,因为它不再需要了。

    或者,您是否在 init 方法中使用了 return self

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 2013-12-05
      相关资源
      最近更新 更多