释放对象导致 exc_bad_access
Posted
技术标签:
【中文标题】释放对象导致 exc_bad_access【英文标题】:releasing object results in exc_bad_access 【发布时间】:2011-10-05 04:43:25 【问题描述】:我对下面的代码有点困惑。我是一名优秀的士兵,通过在以下片段中释放 tmp 对象来点缀 i 并穿过 t。但是,在运行时,我得到“EXC_BAD_ACCESS”
-(void) aMethod
.
.
if (testMode)
MyClass *tmp = [[MyClass alloc] init];
[tmp aMethodInTheClass];
[tmp release];
.
.
如果我删除 [tmp release] 语句,则不会生成错误。
是否不需要释放,因为 'tmp' 对象的范围在内部 if 条件之后停止?
谢谢。
【问题讨论】:
似乎您的应用程序需要一个指向它的指针!在 .h 中定义该变量在你的方法中实例化它并在应用程序 dealloc 方法中释放它 但是我不想为这个临时变量引入实例变量。 检查我的答案是否可行! 【参考方案1】:试试这个,
-(void) aMethod
.
.
if (testMode)
MyClass *tmp = [[MyClass alloc] autorelease];
[tmp aMethodInTheClass];
.
.
祝你好运!
【讨论】:
以上是关于释放对象导致 exc_bad_access的主要内容,如果未能解决你的问题,请参考以下文章
Objective C 方法 removeFromSuperview 导致消息被发送到释放的对象
为啥在 Objective-C 中执行 alloc 和 init 在单独的语句中会导致对象根据 Xcode 静态分析器被释放?