超级班Resource
@interface Resource : CoderObject
@property (strong, nonatomic) NSString *resourceID;
@property (assign, nonatomic) ResourceType resourceType;
@property (assign, nonatomic) DataType dataType;
@end
子类ViewResource
@interface ViewResource : Resource
@property (strong, nonatomic) CustomView *view;
@property (strong, nonatomic) UIViewController *viewController;
@end
在子类ViewResource
的{{1}}方法中,如何访问init
的变量Resource
?现在我想尝试使用dataType
还有其他方法吗?
答案 0 :(得分:2)
您只需使用self.dataType
即可。您的子类具有.h文件中定义的所有超类属性的完全可见性。使用self.xxx
还可以在未来需要时覆盖访问者方法,而无需返回编辑所有使用代码。
查看下面的链接,足够公平。这些都是有效的。访问者不应该有副作用,但你不能保证他们不会。如果属性被定义为超类,那么您有几个选项:
self.xxx
设置属性并尽力确保无副作用答案 1 :(得分:0)
喜欢 Wain 在他的回答中说明你可以直接访问你的超级班级成员(如果他们不是私人的)。
只要你的init看起来像这样,在init方法中调用self.property
没有问题
-(id)initAndTheNameYoWantAndMaybeSomeParameters:(NSString *)paramExample {
self = [super initNameOfAnInitMethodFromSuperClass];
//check if the init was with success
if(self != nil) {
self.myStringProp = paramExample;
//or
self.propertyFromSuper = paramExample;
}
}
是的,你也可以在initMethods中做愚蠢的事情(我之前做过:)))就像从里面调用相同的initMethod那样生成一个崩溃我的应用程序的递归调用。 (很容易发现这个问题)