说我们有父类如何在使用类别子类化类时避免编译警告?
ParentViewController.h
@interface ParentViewController
....
@end
ParentViewController.m
@interface ParentViewController()
- (NSArray *)selectedItems;
@end
@implementation ParentViewController
.....
@end
然后我们继承它
ChildViewController.h
@interface ChildViewController : ParentViewController
....
@end
ChildClassViewController.m
@implementation ChildViewController
- (void)doSomething
{
// XCode Warning Flag on this line
NSUInteger count = [self selectedItems];
.....
}
的XCode将在注释行设置警告标志,并说:“实例方法‘-selectedItems’未找到(返回类型默认为‘ID’)。
是的我知道在ObjC中没有私人方法这样的事情,但使用空的类别类型可以这样做。但不知何故,它不会被子类继承。
我通常通过将方法从ParentViewController.m移动到ParentViewController.h来修复它。这感觉很奇怪,我放弃了将方法设置为私有的能力,因为我需要对它进行子类化。
现在我的问题是:
为什么父子类找不到在其在.m文件类别声明的那些方法呢?
有没有办法删除警告标志,但不失去保持私有方法的能力。
希望有更多经验的人能够帮助解释这个令人讨厌的问题。
是的这个作品。在同一个.m文件中结合父类和子类不是一个选项,因为它们很大。将这些私有方法放在单独的文件中很麻烦。我会接受这个答案,我不认为会有任何其他的方式。 – 2012-03-10 02:55:39
@SamuelChandra,是的,同一个文件只是琐事。你应该永远不要那样做。 – 2012-03-10 03:03:49