The difference is whether or not you are passing an object to the selector. All the selector is doing is describing a method.
[self performSelector:@selector(myMethod) withObject:nil afterDelay:1.0];
is different from:
[self performSelector:@selector(myMethod:usingThis:) withObject:nil afterDelay:1.0];
Now if you want the selector (i.e. method) to work on some object that you pass in, say an Array, Dictionary, or class. You use withObject. As in:
[self performSelector:@selector(myMethod:) withObject:myDictionary afterDelay:1.0];
-(void)myMethod:(NSDictionary*)dictionary
{
// Do something with object
}
You could pass in anything including a reference to the current class (e.g. self), as you did in your example.