将nil添加为子视图是不是一个好主意?

时间:2011-08-16 10:40:17

标签: objective-c ios cocoa-touch

基本上,我创建了一个自定义视图(扩展UIView),显示至少一个图像(但有时两个,一个在另一个上面)。底部图像是一个占位符,由于可以删除放在其上的图像,我希望能够删除顶部图像,以便再次显示占位符。我创建了一条消息,用于将图像放置在占位符的顶部(它删除并释放最后一个子视图并添加新的子视图)以及用于显示占位符的消息。在此消息的过程中,将调用[self addSubview: nil]

我的问题是:

  • addSubview: nil会导致UB吗?这是个坏主意吗?
  • nil添加为子视图后,是否会将其添加到子视图数组中还是会被忽略?

1 个答案:

答案 0 :(得分:4)

添加两个图像视图以显示占位符图像和原始图像真的是一个好主意吗?

只要问问自己为什么要分别使用两个图像视图来显示占位符和原始图像?如果原始图像不可用,您可以只有一个图像视图并显示占位符图像,同时显示原始图像(如果可用)。

- (void)setMainImage:(UIImage *)mainImage {

    if (mainImage) self.mainImageView.image = mainImage;
    else self.mainImageView.image = thePlaceholderImage;
}

如果要删除主图像,只需调用

即可
[self setMainImage:nil];