• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

的Objective-C:编译器警告意外方法覆盖

objective-c 来源:cornr 5次浏览

我才发现这是由一个偶然的方法重写引发了我们的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 {} 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)