2015-11-06 58 views
0

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

所以,我可以使用一个变量与我的NSString类类型,或者我将只使用一个类对象类。

对我来说有两个问题。

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

在你正在分配内存给xyz的声明中! –

+0

* xyz是一个指针,你正在做[nsstring alloc] init],因为你告诉编译器xyz现在是一个新的字符串! LATER上你可以使用xyz作为nsstring,但不能* xyz !!!!!! –

+0

您应该阅读关于堆,堆栈和内存分配的一般信息。从C开始。 – FreeNickname

回答

1

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

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

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

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

@“MyString”是一个快捷方式;编译器会为你创建一个对象并给你一个指向该对象的指针。

相关问题