ios - 为什么此RELEASE不会产生RUNTIME ERROR?

标签 ios objective-c memory-management

这是我的摘录:

  Foo *myFooOne = [[Foo alloc] initWithName:@"my string"];
  Foo *myFooTwo = myFooOne;

  [myFooOne release];

  NSLog(@"Name: %@", myFooTwo.name);

为什么myFooTwo.name产生正确的输出,而不是runtime error
2011-10-28 14:45:10.718 Example[6410:f803] Name: my string

谢谢。

最佳答案

您只是很幸运,已释放的内存尚未被其他用途重用并被覆盖。否则,它将失败。

在将NSZombieEnabled设置为YES的情况下运行您的应用,并且在运行时会引发错误。

关于ios - 为什么此RELEASE不会产生RUNTIME ERROR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929475/

相关文章:

ios - 对 EKEventStatus 感到困惑

objective-c - 使用 NSCoding 编码/解码 double

c - 是否可以打包具有特定对齐方式的局部变量?

微分求解器上的 C++ 段错误

iphone - 内存警告和崩溃问题

ios - 过滤字典数组和字符串数组

ios - 线路交叉点 - GPS 坐标

ios - 如何在 iOS 中获取电池温度详细信息?

iphone - 如何绘制心率图表?

objective-c - Objective-c 中的灯光动画