Iphone NSObject和UIViewController之间有什么区别

Iphone NSObject和UIViewController之间有什么区别,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我是iphone开发新手,我正在学习教程和一些示例 我想知道NSObject和UIViewController类之间的区别,以及我们如何知道应该使用哪个类 有些是用NSObject编写的,有些是用UIViewController编写的。UIViewController是UIResponder的一个子类,它本身是NSObject的一个子类,它是根类(即不是任何东西的子类) 这意味着NSObject的任何方法都可以在UIViewController上调用,但不能反过来调用。如果您查看,它具有使用此类

我是iphone开发新手,我正在学习教程和一些示例

我想知道NSObject和UIViewController类之间的区别,以及我们如何知道应该使用哪个类


有些是用NSObject编写的,有些是用UIViewController编写的。

UIViewController
UIResponder
的一个子类,它本身是
NSObject
的一个子类,它是根类(即不是任何东西的子类)

这意味着
NSObject
的任何方法都可以在
UIViewController
上调用,但不能反过来调用。如果您查看,它具有使用此类时可用的所有属性和方法。此外,您还可以自动获取
NSObject
(在中列出)的所有方法

对于我维护的每个视图,我都使用
UIViewController
。我几乎从未将对象直接用作
NSObject
,尽管我经常将
NSObject
子类化,也从未将
UIViewController
子类化。但这只是我


我建议您看看Apple的,看看使用
UIViewController
有什么好处。

NSObject意味着它只继承ObjectProperties。它没有视图。但UIViewController拥有视图本身。它还可以控制视图


如果不需要视图,则可以使用NSObject。如果需要viewcontroller或view,则可以使用UIViewController。

来自Wikipedia的面向对象编程的基本概述:

面向对象编程(OOP)是一种 使用“对象”的编程范式- 由数据组成的数据结构 字段和方法以及它们的 交互–设计应用程序 和计算机程序。[…]面向对象的程序通常包含不同类型的对象,每种类型对应于要管理的特定类型的复杂数据,或者可能对应于真实世界的对象或概念,例如银行帐户、曲棍球运动员或推土机

在Objective-C中,所有对象都基于
NSObject
。现在就从表面上看吧。如果您想使用对象,它将基于NSObject。因此,除非您使用的是
int
float
,否则您很可能使用的是基于
NSObject
的东西

NSObject本身并不提供任何功能。它是你对一个物体的“起点”或“空白板”

您可以构建一个用于表示动物的对象定义,如下所示:

@interface Animal : NSObject { }

@property (assign) int age;

- (Animal*)mateWith:(Animal*)lover;

@end
@interface Human : Animal { }

- (void)lie;

@end
在这个例子中,我们描述了一种基本的动物。这个班主要做两件事;知道动物的年龄,并能与另一种动物交配产生动物后代

在该示例中,您会注意到我们的对象定义基于NSObject

现在,假设我们想为人类创造一个定义;人类是,而且永远是,所有动物的一个子集。因此,我们可以重复使用动物类定义中的所有逻辑来创建人类定义,我们可以这样做:

@interface Animal : NSObject { }

@property (assign) int age;

- (Animal*)mateWith:(Animal*)lover;

@end
@interface Human : Animal { }

- (void)lie;

@end
在本例中,我们为一种称为“人类”的对象类型创建了一个新定义。我们只定义了一件事:一个让我们的类有说谎能力的方法——除了我们也有交配的能力,因为我们基于“动物”,而“动物”已经描述了如何交配

开始你的问题:

UIViewController包含一系列用于执行一些非常复杂任务的逻辑。大部分逻辑都是Cocoa Touch框架的一部分

如果你正在制作一个“动物”类,你不需要知道如何响应屏幕上的用户输入,你不需要知道如何管理UIView,你不需要跟踪ParentViewController等等。因此,将我们的动物类基于UIViewController是愚蠢的。此时不使用UIViewController

现在,如果您在iPhone上制作了一个用户界面屏幕,并且希望在用户单击按钮时执行一些例程,那么您确实需要所有UIViewController的内容,因此您可以将其子类化

我能理解为什么,如果你不是来自面向对象编程的背景,你可能会对此感到困惑。看起来您需要创建的大多数东西都是UIViewController子类。然而,当你探索OOP的世界时,你会发现不仅是其他人编写的你可以使用的对象,而且它们是你想要从头开始创建的东西,以完成你过去按程序完成的事情

祝你在激动人心的旅程中好运

我强烈建议你去当地的Barnes and Noble旅行,或者去Amazon.com买一些关于这个主题的书——如果你有一个朋友已经知道OOP,那么一个好的导师要比学习自己快得多

别忘了,在iPhone上,您还必须处理内存管理。对于很多人来说,这是一个症结所在——如果你不遵守规则,就会引起很多麻烦。早点学习,你会得到很好的服务

希望有帮助, 干杯

资料来源:


NSObject是obj_c中的超类,UIViewcontroller是NSObject的子类。UIViewcontroller从UIResponder继承属性,这个类从NSObject类继承…

你能给出一些让你困惑的例子吗?他们之间有着天壤之别<首先,code>UIViewController
实际上是
NSObject
的一个子类。谢谢你。NSObject是根类。我们将如何决定使用哪个类?@Abhilash:取决于你想做什么。如果要使用特定于
UIViewController
的方法,如
view
属性,请使用该属性。如果您只需要
NSObject
固有的方法,请使用