来自维基百科,面向对象编程的基本概述:
面向对象编程 (OOP) 是一种
使用“对象”的编程范式——
由数据组成的数据结构
字段和方法及其
交互——设计应用程序
和计算机程序。 [...] 面向对象的程序通常包含不同类型的对象,每种类型对应于要管理的特定类型的复杂数据,或者可能对应于真实世界的对象或概念,例如银行账户、曲棍球运动员,或推土机。
在 Objective-C 中,所有对象都基于NSObject。暂时只看表面价值。如果你想使用一个对象,它将基于 NSObject。因此,除非您使用的是 int 或 float,否则您可能会使用基于 NSObject 的东西。
NSObject 本身并没有真正提供任何功能。它是对象的“起点”或“空白石板”。
您可以构建一个用于表示动物的对象定义,如下所示:
@interface Animal : NSObject { }
@property (assign) int age;
- (Animal*)mateWith:(Animal*)lover;
@end
在这个例子中,我们描述了一个基本的动物。这个类基本上做了两件事;知道动物的年龄,并且可以与另一只动物交配以产生动物后代。
您会注意到,在该示例中,我们的 Object 定义基于 NSObject。
现在,假设我们要为人类创建一个定义;好吧,人类是,并且永远是所有动物的一个子集。因此,我们可以重用 Animal 类定义中的所有逻辑来创建 Human 定义——我们可以这样做:
@interface Human : Animal { }
- (void)lie;
@end
在此示例中,我们为名为“人类”的对象类型创建了一个新定义。我们只定义了一件事:一种方法,它使我们的类能够撒谎——除了我们还将获得交配的能力,因为我们基于“动物”,而“动物”已经描述了如何交配。
回答您的问题:
UIViewController 包含一组逻辑,用于执行一些非常复杂的任务。大多数逻辑是 Cocoa Touch 框架的一部分。
如果你正在制作一个“动物”类,你不需要知道如何响应来自屏幕的用户输入,你不需要知道如何管理 UIView,你不需要跟踪 parentViewControllers 等。因此,基于 UIViewController 的 Animal 类将是愚蠢的。这是不使用 UIViewController 的时候。
现在,如果您在 iPhone 上制作了一个用户界面屏幕,并且您希望在用户单击按钮时执行一些例程 - 那么您确实需要 UIViewController 的所有内容,因此您需要对其进行子类化。
我可以理解为什么,如果您不是来自面向对象的编程背景,您可能会对此感到困惑。似乎您需要创建的大多数东西都是 UIViewController 子类。但是,当您探索 OOP 的世界时,您会发现对象不仅是其他人编写的您可以使用的东西,而且它们是您想要从头开始创建的东西,以完成您过去在程序上做的事情.
祝您在激动人心的旅程中好运。
我强烈建议您前往当地的 Barnes and Noble 或前往 Amazon.com 并获取一些有关该主题的书籍 - 如果您有一个已经了解 OOP 的朋友,那么好的导师比学习自己。
别忘了,在 iPhone 上,您还必须处理内存管理。这对很多人来说是一个症结所在——如果你不遵守规则,就会引起很多麻烦。早点学习它们,你会得到很好的服务。
希望有所帮助,
干杯。
来源: