1

我想创建一个 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;
}

但是当我尝试使用这个类的实例时,这些实例只显示一个蓝框,而不是一个包含灰色框的蓝框。我该如何解决这个问题,可能吗?:)

4

1 回答 1

1

好的,经过一些测试和研究,我找到了答案!

在我的 .h 文件中,我有一个指向 grayView 属性的弱指针:

@property (nonatomic, weak ) UIView *grayView;

相反,它应该是:

@property (nonatomic, strong ) UIView *grayView;

我有点理解为什么,但我不能很好地解释它,所以如果有人能解释为什么(以一种简单的方式)grayView 必须有一个强指针而不是弱指针,请在这个答案下发表评论;)

于 2012-11-11T12:21:25.723 回答