2010-07-12 40 views
0

使用iphone sdk 4.o.我試圖在NSMutableDictionay中存儲大約10個NSTimer對象,然後通過鍵索引它們。這是爲了節省10個不同的startTimer,stopTimer函數。我已經這樣做了,但是很擔心內存泄漏問題在NSMutableDictionary中存儲NSTimer對象

下面的代碼是否安全,是否可以將定時器對象複製到字典中。 TimerList是NSMutableDictionary類型的一個屬性。

-(IBAction)startTimer:(NSNumber)identifier 
{   
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:7 
         target:self selector:@selector(timerFireMethod:) 
         userInfo:nil repeats:YES];  
    [self.TimerList setObject:timer forKey: identifier]; 
} 


-(IBAction)stopTimer:(NSNumber)identifier 
{   
    NSTimer* timer = [self.ReRegisterTimerList objectForKey: identifier]; 
    [timer invalidate]; 
    [self.TimerList setObject:nil forKey: identifier]; 
} 

-(void)timerFireMethod:(NSTimer*)theTimer 
{  
    if (theTimer == [self.TimerList objectForKey:someKey]) 
    { 
     found = true; 
     // do something if its a certain timer     
    } 
} 

回答

2

請注意,您可以通過指針採取類類型的實例,即它應該是NSNumber*NSNumber

否則,它看起來好像沒什麼問題 - 只要記住-invalidate特殊考慮:

您必須在其上安裝了定時器線程發送此消息。