2011-07-09 45 views
0

在我的應用程序代表,我有多個NSString的,聲明如下所以奇應用代理問題

@property (nonatomic, retain) NSString *aString; 

當我認爲第一次加載時,該字符串值設置

appDelegate.aString = @"aValue"; 

哪裏appDelegate

self.appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 

這一切都正常,但由於某種原因,它不適用於我的iPad。它適用於iPad和iPhone(它是通用的)和我的iPhone的模擬器。它工作的更早,我沒有搞砸了。每當我在設置它後嘗試訪問該值時,它都會返回null。我應該做什麼的任何想法?

編輯1:我所試圖做的是閱讀的屬性列表,如果該值爲空,我將手動設置這樣的:

if (appDelegate.aString == (id)[NSNull null] || appDelegate.aString.length == 0) { 
     appDelegate.aString = @"aValue"; 
} 

我把的NSLog中,如果上面的聲明,所以我知道代碼正在執行,但是當我嘗試記錄aString時,它仍然是空的,即使我只是設置它。

我也將增加,所有的設備都運行4.3.x.編輯2:如果我在applicationDidFinishLaunching中設置了值,它不會出現空值,這意味着從視圖控制器設置值時必定存在問題。我不明白爲什麼它不會在一臺設備上工作。

+0

我看不出有任何問題的代碼,有一個使用ASTRING任何額外的代碼? –

+0

編輯的OP與更多信息 – Preston

回答

0

除非你明確地使用NSNull別處,請嘗試使用if (appDelegate.aString == nil || ...甚至只是if (!appDelegate.aString || ...

+0

這不是問題,但。當我嘗試設置使用'appDelegate.aString = @「安勤」的ASTRING價值的問題發生;' – Preston

+0

有你'@ synthesize'd這個屬性? – jtbandes

+0

是的,我合成個個 – Preston

0

中的appdelegate添加方法與名稱

- (void) setaString:(NSString*) str{ 
//add logs and breakpoints here 
} 

機會是 1.一些別的東西正在訪問的字符串。 2.字符串正在某處發佈。

+0

的我(在它前面一個喜歡你的例子,一個帶有「_」)在應用程序的委託做了一個函數並把它稱爲上面顯示的if語句中,但沒有在顯示出來調試器(設備)。但是,它在模擬器上運行時可以正常工作。 – Preston

+0

我會說,你的代碼中存在一些邏輯問題。你需要展示你如何實現它。 –