2015-02-08 67 views
0

CustomClass *variableName = [[CustomClass alloc] init]; variableName.propertyName = @"Some text";新手。自定義類

任何人都可以在人類語言中逐步解釋這個代碼嗎?

爲什麼要發送數據到CustomClass中的一個屬性,我通過varibaleName.propertyName訪問它,但不通過CustomClass.propertyName。 我無法理解它。

如果我想發送一些數據到varibale CustomClass不是邏輯上顯示該屬性的路徑= CustomClass.propertyName = @"Some text";

*variableName - 這是幹什麼用的?

我很困惑。

回答

1

似乎有一些實例和類之間的區別混淆。嘗試將這種複雜的想法與現實世界的例子聯繫起來通常會更好。例如

A 類別例如可以是汽車。因此,你有一個Car類。它將包含所有汽車共享的信息。例如,而不是有propertyName它可以有一個「模型」名稱。要訪問任何給定車的數據,您必須先創建它。這就是你在第一行所做的:CustomClass *variableName = [[CustomClass alloc] init];

在我們的例子中,我們會寫Car *myCar = [[Car alloc] init];,它會創建一個新的Car對象,我們稱之爲myCar。然後,你可以說myCar.model = "Civic"。我們不想讓所有的汽車成爲「公民」,但特別是我們創建的myCar。 不要在描述一般類型的對象的類和作爲對象本身的實例之間混淆。

希望你現在明白你的問題的最後一部分:

* VARIABLENAME - 它是什麼呢?

這意味着您有一個對CustomClass的實例的引用,它被稱爲variableName。在我們的例子中,這是myCar然後您可以操作或更改。

+0

'Car * myCar = [[Car alloc] init];' - 創建一個名爲myCar的新Car對象。但是,如果是:'Car myCar = [[DifferentCar alloc] init];'會有什麼區別?我知道'[[XX alloc] init];'是爲了創建一個新對象,但是XX在那裏做了什麼? – Edgar 2015-02-09 11:48:28

+0

@埃德加其他人也可能會被這個困惑。繼續在另一個問題中提出這個問題。 – 2015-02-10 04:49:17

1

您訪問variableName.propertyName而不是CustomClass.propertyName因爲variableName是類的實例,而CustomClass是類本身,而不是你使用的對象。

例如,你有2 CustomClass對象,可以說variable1variable2variable1.propertyName將與variable2.propertyName不同,因爲它們是類的不同實例,而不是類本身。