我想创建一个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;
}
但是当我尝试使用这个类的实例时,实例只显示一个蓝色框,而不是一个包含灰色框的蓝色框。我怎么能解决这个问题,有可能吗? :)
答案 0 :(得分:1)
好的,经过一些测试和研究,我找到了答案!
在我的.h文件中,我有一个指向grayView属性的弱指针:
@property(非原子,弱)UIView * grayView;
相反,它应该是:
@property(非原子,强)UIView * grayView;
我理解为什么,但我无法以一种好的方式解释它,所以如果有人能解释为什么(以简单的方式),灰色视图必须有一个强指针而不是弱指针,请在此答案下发表评论;)