2009-11-23 46 views
0

我新的目標C。Accesing可變數組值

我已經創建了的appdelegate所述一個可變數組。我試圖在另一個應用程序中檢索可變數組的值。但在這一點上它正在崩潰。 下面是我在AppDelegate中聲明的代碼:

savedLocation = [[NSMutableArray alloc] init]; 
savedLocation = [[NSMutableArray arrayWithObjects: 
     [NSNumber numberWithInteger:0], 
     nil] retain]; 

下面的代碼中,我試圖通過的appdelegate訪問其他應用程序的陣列值:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue]; 

但它在崩潰:

NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue];

請告訴我爲何導致崩潰的原因,並做THI的正確方法也是。

+0

什麼是控制檯中的崩潰消息? – nduplessis 2009-11-23 07:38:52

+0

另外,你正在泄漏savedLocation = [[NSMutableArray alloc] init]; 這是多餘的,因爲[NSMutableArray arrayWithObjects:]返回一個新的自動釋放對象。 – nduplessis 2009-11-23 07:40:26

+0

請仔細閱讀Apple的內存管理文檔,因爲您顯然不知道Cocoa如何做到這一點。 – 2009-11-23 13:42:37

回答

1

如果你真的有2個不同的Objective-C運行的應用程序,請記住,每個人都會有自己的[UIApplication的sharedApplication。如果我正確理解你的問題,你就假設你將能夠使用這種機制在應用程序之間傳遞信息,而事實並非如此。每個應用程序都有自己的共享應用程序和相應的應用程序委託,並且將無法看到其他應用程序的成員。由於您使用的是UIApplication(而不是NSApplication),因此我推斷您正在使用Cocoa Touch(適用於iPhone和iPod Touch),因此您可能對可用於共享數據的機制感興趣應用。有許多可能的方法,包括自定義URL處理程序(以允許一個應用程序啓動具有某些特定參數的其他應用程序),或者使用網絡相關同步機制將數據從這兩個應用程序存儲在某個共享服務器位置互聯網。然而,您應該記住:

  1. 只有一個應用程序可以在任何時候在Cocoa Touch設備上運行。因此,應用程序委託的內存中成員變量將在實例化它們的應用程序退出後立即發佈(以讓其他應用程序讓路)。

  2. 沒有辦法,我知道的一個可可觸摸應用程序讀取由另一可可觸摸應用到設備上保存的數據。操作系統嚴格地對設備上運行的所有單個應用程序進行沙箱處理,因此無法讀取由另一個設備保存的數據。

This question與我想問你的問題類似。

-1

好吧

謝謝你的回覆。

如果我要訪問的易變的陣列中的同一應用程序的另一個視圖,是本下面的代碼細。我已經嘗試過這一點,但它在上面提到的同一點上崩潰了。

下面

被代碼我試圖通過的appdelegate

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue]; 

訪問另一視圖中的數組的值,但它是在

NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue]; 
+0

SO是問答網站,不是論壇。 「發佈你的答案」是爲了答案。如果您需要澄清您的問題或添加其他信息,請編輯該問題。重複你已經發布的代碼不是澄清。 – outis 2009-11-23 08:52:10