的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

回到顶部