Objective-C中'对象'和'变量'之间的实际差异是什么?

时间:2015-11-06 13:41:33

标签: objective-c

我想问一个关于Objective-C中'对象'和'变量'的问题。我们知道,我们可以使用许多变量来存储对象的数据,但首先我们必须创建一个具有分配的对象。我们必须使用'alloc'关键字为RAM中的对象提供内存位置。我认为对象不能存储数据,因为对象是名词,就像人。因此,要存储数据,我们需要使用变量。在C或C ++中,我们使用任何原始数据类型的变量来进行数据存储。在Objective-C中,我们使用预定义的类,如NSString

那么,我可以使用我的NSString类类型的变量,或者我只使用类型为object的对象。

对我来说有两个问题。

NSString *xyz = [[NSString alloc] init]; // can anyone tell me what should be 'xyz' in here a 'variable' or an 'object'?

如果'xyz'是这里的对象。所以,首先我要创造它。但在某个地方,我看到过......

NSString *xyz = @"welcome"; // according to me, here we are not allocating memory for 'xyz'. Why?

两种陈述有什么区别?你能告诉我吗?

1 个答案:

答案 0 :(得分:1)

对象是类的实例。 (这就是全部。没有其他需要说的)。

变量是全局变量和静态变量(具有无限生存时间)和自动变量(函数执行时存在的变量,或者输入函数中的新范围时),并且当范围结束或函数返回时消失。

在Objective-C中,对象永远不可能是变量。指向对象的指针可以是变量,但对象不能。作为对象一部分的值通常称为“实例变量”,但这与变量不同。

在其他语言中,如C ++,对象可以是变量。 “对象和变量之间的区别是什么”这个问题并没有多大意义。这就像问“酒和牛之间有什么区别”。它们是不同类别的东西。

@“MyString”是一个捷径;编译器将为您创建一个对象,并为您提供指向该对象的指针。