從蘋果公司的的OBJ-C文檔:選擇器是一個對象嗎?
如果該方法返回一個對象,然後被髮送到零返回0 (無)的消息。例如:
Person *motherInLaw = [[aPerson spouse] mother];
如果這裏的配偶對象是零,然後媽媽被髮送到零,該方法返回 零。
so spouse
這裏可以是一個對象嗎?如果它是一個對象,它是否必須是一個選擇器?
從蘋果公司的的OBJ-C文檔:選擇器是一個對象嗎?
如果該方法返回一個對象,然後被髮送到零返回0 (無)的消息。例如:
Person *motherInLaw = [[aPerson spouse] mother];
如果這裏的配偶對象是零,然後媽媽被髮送到零,該方法返回 零。
so spouse
這裏可以是一個對象嗎?如果它是一個對象,它是否必須是一個選擇器?
選擇器就像C++類中的類方法,它是您調用的方法的名稱,並定義它將接受的參數的數量和類型。它根本不是一個對象。在上面的示例中,「配偶」是您調用的方法名稱。它從來不是一個對象。
編輯:
代碼
Person *motherInLaw = [[aPerson spouse] mother];
可擴展到這一點:
Person *theSpouse = [aPerson spouse];
Person *motherInLaw = [theSpouse mother];
正如你看到的, 「母親」 方法被調用的返回值「配偶「的方法。這應該清除任何混淆。
該文件實際上是正確的。這只是Objective-C的語法。事實上,在這種情況下,aPerson正在爲配偶調用getter方法。如果配偶在被調用時尚未設置,它將返回nil,此時將母親的getter方法發送給配偶會導致方法調用爲nil。
你所看到的確實是一種方法 - 只是一種返回配偶類型對象的方法,而我上面的海報已經描述了選擇器是什麼。
所以我很困惑你爲什麼把「配偶」稱爲對象。它指的是「aPerson」的方法,那麼爲什麼說「配偶」是一種類型呢?在這種情況下,「配偶」不是一種類型,該類型未指定! –
配偶是包含此代碼的某類屬性或類的對象。從蘋果的文檔上面的代碼基本上是這樣說的:從aPerson獲得配偶的屬性(對象),然後如果該對象不是零,從aPerson的配偶獲得母親的屬性(對象)。然後分配給婆婆!這裏只有getter方法返回對象。 – bgoers
因此,文檔基本上是錯誤的,稱'配偶'是一個「對象」? –
當文檔顯示「配偶對象」時,它就是「配偶方法返回的對象」的縮寫。這是猶太教,如果有點過於簡單化。 – rickster