2011-07-05 28 views
-1

我想在兩個類之間傳遞一個NSMutableDictionary對象。我試過添加一個返回字典的方法無濟於事。NSDictionary類之間通過

-(NSMutableDictionary*) getResponse 
{ 
return response; //where response is a dictionary that has keys and objects assigned 
} 

但即使如此字典不能從其他類拉;它返回「null」。

+0

沒有什麼錯你的榜樣...如果在你的課堂上定義了「response」,這將返回它。確保其他課程保留它! –

+3

它有一個錯誤:它的名字。它應該只是「響應」符合Cocoa命名約定。以'get'開頭的選擇器應以冒號結尾,並且參數應該是存儲獲取值(通過引用返回)的指針。這種方法很好,但應該簡單地命名爲「響應」。 –

回答

2

我試過添加一個方法,它自己返回無濟於事。

-(NSMutableDictionary*) getResponse 
{ 
return response; 
} 

這是因爲該方法返回一個字典。對於自身返回的方法,它必須詢問對象self該方法的選擇器的實現,或者要求Objective-C運行時返回Method結構。

但這不是你真正想要做的,是嗎?

如果你的意思是這種方法返回響應字典,那麼,這正是它所做的。它的寫法是正確的(除了它的名字,我已經在我對這個問題的評論中解釋過了)。

...但即使如此,數據不能從其他類中拉出;

該方法不聲稱返回一個數據對象;它聲稱返回一個字典對象。如果它返回了一個數據對象,那就是一個錯誤。

...它返回void。

不,它返回NSMutableDictionary *void是一種類型;沒有其他方面是有道理的。

如果你的意思是返回nil(指向沒有對象的指針),那就意味着你沒有返回的響應字典。不要問這個對象的響應,直到它有一個。

您可能希望讓響應的對象成爲保存響應的對象的委託,並讓響應持有者在響應進入時向其委派發送消息。您甚至可以將響應包含在那個信息;另一種選擇是答覆持有者只通過自己,而代表則詢問答覆持有人是否在其實施委託方法時使用響應字典。

的更多信息:

+0

我編輯我的問題,使更有意義。不過由於某些原因,這個變量似乎不被保留。我會檢查我的代碼。謝謝。 – Baub

+0

@James Martinez:你的代碼沒有理由保留它。您不保留此權限,因此只有在主叫方保留該權限時才能保留該權限。如果您在'response'中引用了字典的原始所有權,則getter不是查找該字典的地方:查看setter或者原始賦值給變量或屬性。請注意,分配給變量並分配給屬性與Objective-C語言文檔中討論的非常不同。 –

0

如果你的方法返回零,這是因爲你的response變量爲零。目前可能無法初始化。嘗試在getResponse方法中執行NSLog(@"Response: %@", response);。查看控制檯是否打印(空)或有效的NSMutableDictionary對象。

+0

它打印出null,但它應該已經有了它之前聲明和使用的信息。 – Baub

+1

表示該變量從未設置。記憶保留在這裏不是問題。在執行此方法之前,您的init/setter未被調用。或者,你在一個新的對象上執行它,而不是一個初始化的對象。 – David

+0

我附上我的代碼在這裏:http://stackoverflow.com/questions/6599955/cant-send-nsmutabledictionary-to-another-class – Baub