2

在创建objective-c 类的过程中,我没有找到UIImageView 的选项可以从下拉列表中进行选择。我正在使用 xcode 4.3。我想知道我们是否允许扩展 UIImageView 类。

还是我必须继承 UIView ?自定义 UIImageView 类的任何示例结构都会有所帮助。

4

2 回答 2

7

我相信子类化 UIImageView 被认为是不好的做法。如果你看一下这个问题,有很多例子说明你为什么不应该这样做:

  • Gang of Fours 设计模式哲学的一部分是“支持‘对象组合’而不是‘类继承’”。这减少了对象之间的紧密耦合。那么更改一个类将对系统中的其他类产生较小的影响。这使更改更容易,从而使系统更稳定、更易于维护。

  • 它继承 UIView 的原因是,例如,您应该在下载图像时显示 UIActivityIndi​​cator。他们没有在他们的示例中显示这一点,但我已经使用了这段代码,它真的很好。另请查看这篇文章的评论,您会发现更多代码示例,还包括一些缓存和好东西。

但是,可以继承 UIImageView。看看这个问题

上述问题中建议的一个很好的选择是使用类别而不是子类化 UIImageView:

  • 我建议使用Objective-C“类别”而不是继承UIImageView。只要您不必添加任何成员变量,Category 就是更好的解决方案。当您使用类别时,您可以在原始类的任何实例上调用您的扩展函数(在您的情况下为 UIImageView。这消除了您在可能想要使用新函数的任何地方有意识地使用子类的需要。

希望这可以帮助!

于 2012-07-30T10:20:41.043 回答
2

你可以继承 UIImageView。即使 qegal 的答案包含很多您应该记住的正确内容,只需将光标放在下拉列表中并开始输入您想要继承的任何类的名称,它就会开始自动完成。

于 2012-07-30T10:34:34.073 回答