我的类中有两个方法
- (void)configureWithDictionary:(NSDictionary*)dictionary;
- (void)configureWithDictionary:(NSDictionary*)dictionary withOptions:(XWTreeItemConvertationToNSDictionaryOption*)options;
我对它们都有实现。所以!像这样的解决方案:“只需添加 NSAssert(NO, @"You mast override this method")"将无济于事 =(
- (void)configureWithDictionary:(NSDictionary*)dictionary withOptions:(XWTreeItemConvertationToNSDictionaryOption*)options;
{
NSAssert(NO, @"You mast override this method"
}
因为我那里有一些代码。并且需要在重载方法中编写[super configureWithDictionary:dictionary withOptions:options];
。
每个人都可以使用这个方法。我两者都需要!但是。
如果某些开发人员重载-[MYClass configureWithDictionary:]
,它可能会“工作不正确”。只是因为这个方法不会随时调用。所以我需要在控制台写一些东西。例如:“请重载方法:-[MYClass configureWithDictionary:withOptions:]
”。我只想在这个方法中处理一次:
+ (void)initialize
{
if (self == [self class]) {
}
}
但我找不到任何解决方案(在 Documentation/google/stackoverflow 中)。并且无法处理:“开发人员是否重载基类的方法”。
也许有更好的解决方案。但我觉得应该是最好的。如果您还有其他想法。请写在下面=)
我只找到了方法:+[NSObjectinstanceRespondToSelector]
,当然我知道-[NSObject respondsToSelector:]
,但正如你所知,它总是返回YES。我需要几乎相同的,但对于当前类忽略基础。
最佳答案
可能这并不完全是您所要求的,但是当我需要确保子类重载某些必需的方法时,我会这样做:
@protocol SomeClassRequiredOverload
- (void) someMethodThatShouldBeOverloaded;
@end
@interface _SomeClass
@end
typedef _SomeClass<SomeClassRequiredOverload> SomeClass;
关于objective-c - 我可以检测到: "Does class overload method of base class"?吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33127740/