我有一个名为 BaseClass 的基类。许多类派生自基类,即子类 1、子类 2 和子类 3。
@interface BaseClass: NSObject{
}
-(void)configure;
@end;
@implementation
-(void)configure{
NSLog(@"This needs to log from which sub class this method was called");
}
@end;
可以通过创建子类的实例或在子类的实现中调用配置方法。
我需要知道这个方法是从哪个子类调用的。
这可能吗?
不可以。方法无法知道它们是从哪个其他对象的方法中调用的。甚至没有呼叫者身份的概念。可以从根本没有调用者对象的 C 函数中调用方法。
我需要知道这个方法是从哪个子类调用的。
话虽这么说,您可能只想知道对象属于哪个(派生)类:
NSLog(@"My class: %@", NSStringFromClass([self class]));
2014 年附录:有一个gnu扩展__builtin_return_address http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html可能用于此目的。迈克·阿什展示 https://mikeash.com/pyblog/friday-qa-2014-01-10-lets-break-cocoa.html如何使用它来提取调用者符号名称(请参阅“调用者检查”)。我仍然认为整个方法有点脆弱,应该只用于调试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)