好吧,標題就以最通俗的語句命名,估計百度收錄的時候,大家查找的時候會更加的方便。
iOS新手,這個問題著實調試了好長時間!
由於上手就開始做大的項目,也沒時間從基礎做起,相信大多數小公司的開發者都是這種模式。因此很多問題都產生自很基礎的錯誤。
項目使用mvc結構,在異步讀取完數據後,NSArray中model的數據就丟失了,專業點就是內存釋放了,只剩下內存地址了。
可能大家的情況和我不同,所以解決方法也不一定相同。
項目服務端是asp.net webservice,使用AFNetworking讀取到的數據類型為xml,然後再使用GDataXMLNode讀取xml中的值賦給新建的model,從而生成model的NSArray。
在建立model的時候,屬性的參數值設置為
// 發布者姓名
@property(nonatomic,assign) NSString *SenderName;
注意是assign,好吧,這種建立屬性的方式是copy別的代碼的。問題就出現在這裡,屬性設置的assign,屬於地址引用,那麼在調用完GDataXMLNode後,NSString就自動釋放了,所以在ViewController中就讀取不到值了。
只需要將assign修改為copy即可。
// 發布者姓名
@property(nonatomic,retain) NSString *SenderName;
這是一個很基礎的錯誤,在不了解內存釋放機制和屬性的情況下,解決這種問題相當棘手,下面就列出來這部分的基礎知識,邊做邊學吧!
iOS開發中@property屬性介紹:http://gaoyong.diandian.com/post/2011-11-02/6444165