2012-07-07 38 views

回答

1

id是代表Objective-C對象的純C兼容類型。這允許C源代碼存儲和交互Objective-C對象。

-1

- (id)init調用來初始化對象內部的變量並執行任何必要的設置(它基本上是構造函數)。

甲possiable複製可以是 What's the -(id)init method good for?

+1

這不回答問題 – borrrden 2012-07-07 07:54:52

5

id表示類型,是與任何對象兼容。符號

- (id)init 

表示init您的類的實例方法;通常用於在內存分配後初始化實例化的對象(通常使用alloc完成)。在Objective-C中,方法的返回類型是通過將類型放在方法名稱前的括號中來聲明的。所以,這意味着init方法可能會返回任何Objective-C對象。


但是,你應該真的,真的谷歌的一個Objetive-C教程,並閱讀它。這是一個基本的東西,因爲沒有閱讀教程或其他文檔,沒有理由

0

它是'id'類型的原因是-init方法從NSObject一直繼承下來(在Objective-C中,您不能重載方法,因此您無法更改參數/ retrurn值子類化時的類型)。由於'id'與任何對象一起工作,所以這是可以的。

編輯似乎指定具體類作爲-init的返回類型是可以的,即使您最終重寫' - [NSObject init]'。

我猜'id'的使用只是一種習慣?儘管如此,'id'作爲「通用Objective-C對象指針」接受任何對象類型的事實仍然保持不變。

+2

你確實可以在子類化時改變返回類型和參數類型。 – 2012-07-07 08:07:15

+0

「子類化時不能更改參數/回溯值類型」實際上,這不是真的。你沒有看過像' - (MyViewController *)init'嗎? – 2012-07-07 08:11:05

+0

你說得對,我糾正了。我確信你不能做的是爲屬性訪問器創建子類,並指定一個原始類型的子類。 (但當然這與問題無關) – 2012-07-07 08:42:26

相關問題