実際の実装に使っていいかは分かりませんが、呼び出し元を調べる方法を探していてstack overflowで見つけたのでメモしておきます。
// `callStackSymbols`メソッドでコールスタックを得る
NSString *sourceString = [NSThread callStackSymbols][1];
//=> (出力例)1 AppName 0x000bca8a -[AnyViewController viewDidAppear:] + 266
// `NSCharacterSet`クラスを使ってセパレータのセットを作る
NSCharacterSet *separatorSet = [NSCharacterSet characterSetWithCharactersInString:@" -[]+?.,"];
// セパレータを使ってスタックの文字列を分解
NSMutableArray *array = [NSMutableArray arrayWithArray:[sourceString componentsSeparatedByCharactersInSet:separatorSet]];
// 空文字を排除
[array removeObject:@""];
// それぞれを出力
NSLog(@"Class caller = %@", array[3]); // => AnyViewController
NSLog(@"Method caller = %@", array[4]); // => viewDidAppear: