objective-c – 是否可以为必须覆盖的方法创建警告?
参见英文答案 >
Implement a pure virtual method in Objective-C????????????????????????????????????6个
我正在阅读 Creating an abstract class in Objective-C,我对这个类的“抽象性”仅在运行时强制执行这一事实并不十分满意.如果方法没有在子类中实现,我希望能够显示一些警告.理想情况下,这可以缩减为一个或两个#defines. 是否巧妙地使用__attribute((可用,已弃用等))__或#warning以及一些可以实现此目的的#pragma clang诊断推送? 我认为这是可能的;我只是不太了解Clang想出来的. 编辑: 没有必要告诉我我应该使用协议.我已经将它们用于此目的.我更好奇的是,它是否可以完成(了解更多关于Clang)而不是它是否应该完成. 我看到这与NSManagedObject类似,需要将属性标记为@synthesized或@dynamic.我已经研究了这个,我看到在NSManagedObject.h中,该类被标记为NS_REQUIRES_PROPERTY_DEFINITIONS,它转换为NSObjCRuntime.h中的__attribute __((objc_requires_property_definitions)).是否有一些创造性的使用这些内置的#defines可以使这个工作吗? 编辑#2: 对于那些说抽象超类不是Objective-C方式的人,我将引导你到documentation for
解决方法
我更喜欢
NSException方法(这是一个运行时,而不是编译时,错误).
在你的超类中: @interface NSSuperclass : NSObject - (void)execute; @end @implementation NSSuperclass - (void)execute { @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:[NSString stringWithFormat:@"Called %@ on superclass NSSuperclass,this should only be called on subclasses",NSStringFromSelector(_cmd)] userInfo:@{@"object": self}]; } @end 然后在子类中重写此方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |