【发布时间】:2011-02-17 06:24:31
【问题描述】:
我正在尝试创建一个 NSTimer,然后使其无效并释放它,然后将其设置为一个新的计时器。但是,在尝试再次设置计时器成员 var 时,我得到了 EXC_BAD_ACCESS。
代码如下:
1)我设置了定时器成员变量(设置为保留)
self.mPageTimer = [NSTimer scheduledTimerWithTimeInterval:kPageTimerInterval target:self selector:@selector(pageTimerCallback) userInfo:nil repeats:NO];
2) 我放手了
[mPageTimer invalidate];
[mPageTimer release];
当我再次尝试在步骤 1 中调用 sn-p 时,这会导致崩溃,但我不知道为什么。我通过设置保留它,然后释放它,所以不应该照顾对象并且我的成员 var ok 设置为新分配的计时器吗?
如果我这样做,它不会崩溃并且可以正常工作:
[mPageTimer invalidate];
[mPageTimer release];
mPageTimer = nil;
我看不出我在释放对象时做错了什么,因为不管是不是这种情况,我不应该总是将我的成员 var 设置为任何新创建的 nstimer、泄漏或不是吗?
【问题讨论】:
-
检查代码中的任何其他地方,您将在
release之后将消息传递给mPageTimer。因为您可以将消息传递给nil,所以它可能不会崩溃。