In general, steer clear of performSelector:
. The reason being that ARC cannot help you. Even if you think your app works and you've tested that it does, it might break later down the line when you change something.
Sure, if the selector you're calling does not start with alloc
, new
, copy
, mutableCopy
, etc then it won't be a problem. But there's cases, such as using __attribute__((ns_returns_retained))
that make it non-obvious that a method might return something retained. In any case, having code that ARC cannot help you out with, is a bad thing.
There's always a way to make it such that you don't have to use performSelector:
. Why not make use of a callback block for example?