所以基本上我一直在寻找一种方法来编写我的代码,它有很多uiview实例(让一切看起来都很混乱!erk!)更具可读性和优雅。
到目前为止,我已经看到了子类化的使用,但并不真正理解使用这种做法的重要性/原因!
据我所知:
"class2.m":
您创建了一个继承自UIView的类。
“class1.m”:
从超类“class1”中创建一个继承自class2的第一类实例?
所以我想要理解的是,为什么你会有一个继承自另一个(UIView)的class2.m的类,而不是直接从class1继承UIView?
对不起我听起来像个顽固的人,但我只是不明白?我真的想知道为什么......
此致
修改
有人可以使用类似于一个名为userProfile的类和guestProfile类的示例进行解释吗?
答案 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应用程序时常用的所有类都继承自NSObject
。 NSObject
是大多数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
答案 4 :(得分:0)
基本上,子类的使用是定制新功能,也可以在其他类中重用。