2012-06-16 85 views
0

從蘋果公司的的OBJ-C文檔:選擇器是一個對象嗎?

如果該方法返回一個對象,然後被髮送到零返回0 (無)的消息。例如:

Person *motherInLaw = [[aPerson spouse] mother]; 

如果這裏的配偶對象是零,然後媽媽被髮送到零,該方法返回 零。

so spouse這裏可以是一個對象嗎?如果它是一個對象,它是否必須是一個選擇器?

回答

0

選擇器就像C++類中的類方法,它是您調用的方法的名稱,並定義它將接受的參數的數量和類型。它根本不是一個對象。在上面的示例中,「配偶」是您調用的方法名稱。它從來不是一個對象。

編輯:

代碼

Person *motherInLaw = [[aPerson spouse] mother]; 

可擴展到這一點:

Person *theSpouse = [aPerson spouse]; 
Person *motherInLaw = [theSpouse mother]; 

正如你看到的, 「母親」 方法被調用的返回值「配偶「的方法。這應該清除任何混淆。

+0

因此,文檔基本上是錯誤的,稱'配偶'是一個「對象」? –

+3

當文檔顯示「配偶對象」時,它就是「配偶方法返回的對象」的縮寫。這是猶太教,如果有點過於簡單化。 – rickster

0

該文件實際上是正確的。這只是Objective-C的語法。事實上,在這種情況下,aPerson正在爲配偶調用getter方法。如果配偶在被調用時尚未設置,它將返回nil,此時將母親的getter方法發送給配偶會導致方法調用爲nil。

你所看到的確實是一種方法 - 只是一種返回配偶類型對象的方法,而我上面的海報已經描述了選擇器是什麼。

+0

所以我很困惑你爲什麼把「配偶」稱爲對象。它指的是「aPerson」的方法,那麼爲什麼說「配偶」是一種類型呢?在這種情況下,「配偶」不是一種類型,該類型未指定! –

+1

配偶是包含此代碼的某類屬性或類的對象。從蘋果的文檔上面的代碼基本上是這樣說的:從aPerson獲得配偶的屬性(對象),然後如果該對象不是零,從aPerson的配偶獲得母親的屬性(對象)。然後分配給婆婆!這裏只有getter方法返回對象。 – bgoers