Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 一段时间后从NSMutableDictionary中删除对象_Ios_Cocoa_Selector_Nstimer_Nsmutabledictionary - Fatal编程技术网

Ios 一段时间后从NSMutableDictionary中删除对象

Ios 一段时间后从NSMutableDictionary中删除对象,ios,cocoa,selector,nstimer,nsmutabledictionary,Ios,Cocoa,Selector,Nstimer,Nsmutabledictionary,我想在一段时间后从NSMutableDictionary中删除一些对象 我有: //first Method start PedObjectTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(fireTimer:) userInfo:PedMessage repeats:YES]; [PedMessage setObject:PedObjectTimer forKey

我想在一段时间后从NSMutableDictionary中删除一些对象

我有:

//first Method start
    PedObjectTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(fireTimer:) userInfo:PedMessage repeats:YES];
    [PedMessage setObject:PedObjectTimer forKey:@"Timer"];
    [PedObjects setObject:[PedMessage copy] forKey:[PedMessage objectForKey:@"ObjectID"]];
//first Method end



- (void) fireTimer:(NSTimer*)theTimer {

    NSLog(@"%@",PedObjects);
    [PedObjects removeObjectForKey:[[theTimer userInfo]objectForKey:@"ObjectID"]];
    NSLog(@"%@",PedObjects);

    [theTimer invalidate];
    theTimer = nil;
}
问题是我无法将计时器对象复制到字典

[PedObjects setObject:[PedMessage copy] forKey:[PedMessage objectForKey:@"ObjectID"]];
[self performSelector:@selector(delete:) withObject:[PedObjects objectForKey:[PedMessage objectForKey:@"ObjectID"]] afterDelay:2.0];


-(void)delete:(NSMutableDictionary*)dict
{
    NSLog(@"%@",[PedMessage objectForKey:@"ObjectID"]);
    NSLog(@"%@",PedObjects);
    [PedObjects removeObjectForKey:[dict objectForKey:@"ObjectID"]];
    NSLog(@"%@",PedObjects);

}
在fireTimer方法中,如何在2秒后删除正确的一个

这样我得到了相同的结果,如果我有2个选择器,它将不会删除我字典中的2个条目

[PedObjects setObject:[PedMessage copy] forKey:[PedMessage objectForKey:@"ObjectID"]];
[self performSelector:@selector(delete:) withObject:[PedObjects objectForKey:[PedMessage objectForKey:@"ObjectID"]] afterDelay:2.0];


-(void)delete:(NSMutableDictionary*)dict
{
    NSLog(@"%@",[PedMessage objectForKey:@"ObjectID"]);
    NSLog(@"%@",PedObjects);
    [PedObjects removeObjectForKey:[dict objectForKey:@"ObjectID"]];
    NSLog(@"%@",PedObjects);

}

您可以使用以下内容:

而不是计时器,你打电话

[self performSelector:@selector(delete:) withObject:yourDictionary afterDelay:2.0];

//delete implementation

-(void)delete:(NSMutableDictionary*)dict {
    [dict removeObjectForKey:@"yourKey"];
}

您可以使用以下内容:

而不是计时器,你打电话

[self performSelector:@selector(delete:) withObject:yourDictionary afterDelay:2.0];

//delete implementation

-(void)delete:(NSMutableDictionary*)dict {
    [dict removeObjectForKey:@"yourKey"];
}

现在我也有同样的问题,如果我有两个选择器,它将不会删除我字典中的两个条目…@Phil:你说的两个选择器是什么意思?类似但更简单的可能是:[dict performSelector:@selector(removeObjectForKey:)with object:@“yourKey”afterDelay:2.0];现在我也有同样的问题,如果我有两个选择器,它将不会删除我字典中的两个条目…@Phil:你说的两个选择器是什么意思?类似但更简单的可能是:[dict performSelector:@selector(removeObjectForKey:)with object:@“yourKey”afterDelay:2.0];