Batgar’s technique is too complicated. Why not take advantage of the forKey parameter in addAnimation? It was intended for this very purpose. Just take out the call to setValue and move the key string to the addAnimation call. For example:
[[hearingAidHalo layer] addAnimation:animation forKey:@"Throb"];
Then, in your animationDidStop callback, you can do something like:
if (theAnimation == [[hearingAidHalo layer] animationForKey:@"Throb"]) ...