2015-11-06 87 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」是一個快捷方式;編譯器會爲你創建一個對象並給你一個指向該對象的指針。

相關問題