performSelector并匹配cancelPreviousPerformRequestWithTarget

时间:2011-02-15 21:11:25

标签: iphone objective-c cocoa cocoa-touch

如果我用这个开始一些事情:

> [self performSelector:@selector(runThis:) 
>    withObject:thisObject  
>    afterDelay:5.0];

我以后应该使用哪一个取消它,避免“runThis:”从中运行?

1> [NSObject cancelPreviousPerformRequestsWithTarget:self];

2> [NSObject cancelPreviousPerformRequestsWithTarget:self 
2>    selector:@selector(runThis:) 
2>    object:nil];

甚至不确定1和2之间的区别是什么。

#1取消任何/所有我的performSelector's,无论其名称是什么?

#2只取消一个,特别是“runThis:”?

(如果我有3个不同的performSelector运行“runThis:”怎么办?如何指定哪一个取消...使用#1或#2?)

#1似乎正确地取消了。

#2似乎没有取消任何......永远。

在开始时传递thisObject,取消时是否为nil,这是否重要?

1 个答案:

答案 0 :(得分:1)

IIRC没有一个是好的;第二个只是给你更精细的控制。

对于#2,您必须传入一个对YES返回-isEqual:的对象。与nil内容不同,NSNotification并不代表该方法的“任何内容”。

相关问题