jor*_*rry 33 xcode objective-c
不使用ARC时,在dealloc方法中不调用[super dealloc]时会收到警告.
我正在尝试实现类似于类的子类,它经常被子类化以警告实现子类的人,当他们不调用super时.
有任何想法吗?
bbu*_*bum 86
最新版本的llvm添加了一个属性,指示子类必须调用super:
@interface Barn:NSObject
- (void)openDoor NS_REQUIRES_SUPER;
@end
@implementation Barn
- (void) openDoor
{
;
}
@end
@interface HorseBarn:Barn
@end
@implementation HorseBarn
- (void) openDoor
{
;
}
@end
Run Code Online (Sandbox Code Playgroud)
编译上面会产生警告:
Method possibly missing a [super openDoor] call
Run Code Online (Sandbox Code Playgroud)
有关直接告诉编译器子类必须调用的方法,请参阅bbum的答案super.
Apple通常会提供一个钩子,比如说viewDidLoad.Apple在基地没有做任何工作-[UIViewController viewDidLoad].这是一个空洞的方法.相反,Apple在其他地方开展工作,使用一些您不允许覆盖的私有方法,并viewDidLoad从该方法调用您的方法.所以,即使你忘记打电话给[super viewDidLoad]你的UIViewController子类中,苹果所有的工作仍一事无成.
也许你可以修改你的API以使用类似的模式.
| 归档时间: |
|
| 查看次数: |
4967 次 |
| 最近记录: |