【发布时间】:2014-03-09 22:24:45
【问题描述】:
(我并不是说不是,这是我更多的要求,以确保我正确实施了面向对象的原则。)
假设我想创建一个UIView,其中包含一个UIImageView,并在UIImageView 下方添加一个UILabel。
在 iOS 应用程序中,如果我想在应用程序的多个部分中使用此 UIView 设置,最好的方法是什么?
我阅读的很多教程似乎都指向子类UIView,并且在init 方法之一中创建子视图,然后将它们添加到self,瞧,只需创建此@987654329 的新实例@ 子类,你有一个 reusable 实现。
但是这个“带有标题的图像”概念作为 UIView 的 子类 有意义吗?我理解子类化和继承就像你有一个名为Vehicle 的超类,你创建了一个名为Truck 的子类。如果你看它,“卡车”是一个“车辆”,这就是我对继承的理解。
会
“带标题的图像”是一个“视图”
在继承中具有概念意义?我知道很多人会说“当然可以!”但我只是看着它,并认为它不完全是超类的派生或定制,而是其他一些的合并。
如果我要创建类似的东西,我几乎在想我想要一个可重用的 UIView 自定义实例,而不是 UIView 的子类,但也许我'我对子类化的定义过于尖锐。
如果我只想要一堆红色的UIButtons 并带有可以重复使用的标签的特殊字体怎么办?子类化真的有用吗?
子类化是最好的选择吗?或者也许从笔尖创建它并用代码导入它会更好?
【问题讨论】:
-
UIView 的子类非常有意义。可能会让您感到困惑的是,您的 UIView 子类可能会成为不同视图的“子视图”,并且您可以将“子视图”添加到您的 UIView 子类中。子类和子视图是两个完全不同的东西——“普通”对象中的“isa”和“hasa”关系之间的区别。
-
(你不应该子类化的唯一 Cocoa 类是那些在他们的文档中说“不建议对此类进行子类化”的内容。其他一切都是公平的游戏。)
标签: ios objective-c inheritance uiview subclass