gir*_*ish 2 cocoa-touch objective-c nstimer ios
我NSTimer在我的视图类中使用一个每15秒调用一次.我的问题是,它工作正常,但我的应用程序变慢,因为它显示了整个应用程序的性能.所以我想暂停NSTimer当我的视图从超级视图中消失并在出现时重新启动计时器.请帮我解决问题.这是我的代码:
- (void) viewWillAppear:(BOOL)animated
{
if(!Thread_bool)
{
//[spinner startAnimating];
NSTimer *timer_new1=[[NSTimer alloc] init];
timer_new1=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(threadMethod) userInfo:nil repeats:YES];
self.timer_new=timer_new1;
[timer_new1 release];
[self.tableView setEditing:NO];
isEditing=NO;
Thread_bool=YES;
}
}
-(void)viewWillDisappear:(BOOL)animated
{
[self.timer_new invalidate];
timer_new=nil;
}
Run Code Online (Sandbox Code Playgroud)
NSTimer *timer_new1=[[NSTimer alloc] init];
timer_new1=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(threadMethod) userInfo:nil repeats:YES];
self.timer_new=timer_new1;
[timer_new1 release];
Run Code Online (Sandbox Code Playgroud)
在第一行中,您已分配一个计时器,在第二行中,另一个计时器已创建并分配给timer_new1.因此,您丢失了对前一行中分配的计时器的引用,并且该计时器已泄露.您不需要第一行alloc.做这个:
NSTimer *timer_new1 = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(threadMethod) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)
并删除[timer_new1 release];(我假设self.timer_new保留).也在viewWillDisappear做self.timer_new = nil;而不是timer_new=nil;.添加self它将调用setter并正确释放先前的计时器.
| 归档时间: |
|
| 查看次数: |
8688 次 |
| 最近记录: |