你为什么要继承UIView?

时间:2014-07-04 17:18:15

标签: ios objective-c inheritance uiview subclassing

所以基本上我一直在寻找一种方法来编写我的代码,它有很多uiview实例(让一切看起来都很混乱!erk!)更具可读性和优雅。

到目前为止,我已经看到了子类化的使用,但并不真正理解使用这种做法的重要性/原因!

据我所知:

"class2.m":
  1. 您创建了一个继承自UIView的类。

    “class1.m”:

  2. 从超类“class1”中创建一个继承自class2的第一类实例?

  3. 所以我想要理解的是,为什么你会有一个继承自另一个(UIView)的class2.m的类,而不是直接从class1继承UIView?

    对不起我听起来像个顽固的人,但我只是不明白?我真的想知道为什么......

    此致

    修改

    有人可以使用类似于一个名为userProfile的类和guestProfile类的示例进行解释吗?

5 个答案:

答案 0 :(得分:3)

我将UIView子类化的原因是,我可以覆盖-drawRect:来执行我自己的自定义绘图。因为Core Graphics绘图代码只能从这个方法执行,所以它只在你子类化时公开,让我有机会自定义我的视图。

答案 1 :(得分:1)

如果你有几个继承自UIView但有共同点的类(class2,class3,class4 ......),这很有用。你把常见的东西放在class1中,然后让这些类继承自class1。

答案 2 :(得分:1)

比喻说,UIView就像Animal,现在class1.m是bird而class2.m是duck。鸭是一种动物(遗传)的鸟

现在如果我们要创建一个新的bird,我们不想继承animal,否则我们需要重新编码bird定义的所有内容,这只会增加代码膨胀和浪费时间。

但是说你想养一只狗,我们显然不能继承bird,因为一只狗没有bird的任何特征,所以我们必须继承动物。

希望稍微澄清一下

答案 3 :(得分:1)

简答:

您继承UIView以继承所有UIView功能并添加自定义功能。

答案很长:

您的问题更多地涉及继承的概念,而不是特别使用子类UIView。继承是一个简单的概念,但如果您不熟悉面向对象编程,则会导致混淆。

如果您注意到,开发iOS应用程序时常用的所有类都继承自NSObjectNSObject是大多数Objective-C类的根类,NSObject提供的主类方法(以及随后任何继承NSObject的类)是alloc(或new,具体取决于用法)。这就是为什么你可以调用[UIView alloc],因为alloc是通过类层次结构继承的。 UIView本身不为alloc提供实现,而是通过NSObject继承该方法。

一个简单而常见的例子来说明继承使用动物。假设我们在层次结构的根部有一个超类,所有动物都从名为Creature继承。现在让我们的子类Creature创建一个Mammal类。 Mammal类将继承Creature class的所有功能(公共接口)。

@interface Creature{

}
- (void)whatAmI;

@end

@implementation Creature

-(void)whatAmI{

     NSlog(@"I am a Creature");
}

@end

@interface Mammal:Creature{

}

@end

实施我们的Mammal课程:

Mammal *mammal1 = [[Mammal alloc]init];
[mammal1 whatAmI];

<强>输出:

  

我是一个生物

请注意,Mammal从父类-whoAmI继承Creature方法。您现在可以从Mammal继承,并且该子类将继承{{1}的功能}和Mammal。继承的层次结构可以继续。

如果您想要深入了解Objective-C,我建议Steven Kochan使用 Programming in Objective

讨论Objective-C中继承的资源:

http://www.techotopia.com/index.php/Objective-C_Inheritance

http://www.tutorialspoint.com/objective_c/objective_c_inheritance.htm

Objective-C multiple inheritance

答案 4 :(得分:0)

基本上,子类的使用是定制新功能,也可以在其他类中重用。