继承如果您有两个子类 NSManagedObject所在的父级 class实现动态属性 和它的子类(。的孙子 NSManagedObject)覆盖方法 对于财产,那些覆盖 不能打电话给超级。
@interface Parent : NSManagedObject
@property(nonatomic, retain) NSString* parentString;
@end
@implementation Parent
@dynamic parentString;
@end
@interface Child : Parent
@end
@implementation Child
- (NSString *)parentString
{
// this throws a "selector not found" exception
return parentString.foo;
}
@end
非常,非常有趣,因为:我看到没人叫超级。或者是他们?等等... parentString.foo导致...崩溃???这是一个字符串。那个东西怎么能有.foo后缀呢?只是另一个文档错误?
答案 0 :(得分:1)
我认为这个例子是乱码。
我很确定继承问题是由于@dynamic方法是由运行时创建的。编译器不会尝试为它们创建符号。如果没有实例化父类,我认为这些方法根本不存在。因此,子类实例实际上不可能有一个实时选择器/符号来调用。
这是自动运行时代码生成所必需的权衡。