的Objective-C:编译器警告意外方法覆盖
我才发现这是由一个偶然的方法重写引发了我们的iOS应用程序中的错误。的Objective-C:编译器警告意外方法覆盖
在这种情况下,子类中的属性将覆盖在父类“私人”的方法。
@interface MyClass : NSObject - (void)doSomething;
@end
@implementation MyClass
- (void)doSomething {
[self hideView];
}
- (void)hideView {
}
@end
@interface MySubclass : MyClass
@property (NS_NONATOMIC_IOSONLY) IBInspectable BOOL hideView;
@end
@implementation MySubclass
@end
如果[self hideView]
在doSomething
方法中调用,该方法hideView
不调用。相反,只是财产被要求其价值。我明白为什么会发生这种情况,但这是一种容易出错的情况,因为子类不知道hideView
方法。
我的问题是如何避免这些问题?有没有编译器警告?
回答:
你不能完全避免这些问题,这是客观C.预期的行为,但是,如果你想防止意外重写你的私有方法,你可以用你的库的标识符(或任何其他前缀他们的名字例如:
- (void)__mylib_hideView {}
以上是 的Objective-C:编译器警告意外方法覆盖 的全部内容, 来源链接: utcz.com/qa/262863.html