我想创建一个Uiview子类,该子类将在其初始化器中添加一个Uiview,例如:
[self addSubview: someKindOfUIView];
这就是我在实现文件中实现的方式:
- (id)init
{
self = [super initWithFrame:CGRectMake(0, 0, 110, 110)];
if (self) {
self.grayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
self.grayView.backgroundColor = [UIColor grayColor];
[self addSubview:self.grayView];
[self setBackgroundColor:[UIColor blueColor]];
}
return self;
}
但是,当我尝试使用此类实例时,实例只显示一个蓝色框,而不是一个包含灰色盒子的蓝色框。我该如何解决,这是可能的吗?:)
好吧,经过一些测试和研究,我找到了答案!
在我的.h文件中,我的指针较弱,指向Grayview属性:
@property(非原子,弱)uiview *grayview;
相反,应该是:
@property(非原子, strong )uiview *grayview;
我有点明白原因,但是我不能很好地解释它,因此,如果有人可以解释为什么(以一种简单的方式)Grayview必须有一个强大的指针而不是弱指针,请在此答案下发表评论;)