嗯......這聽起來像你的程序使用automatic reference counting (ARC),其中你的屬性和變量可能是弱或強的引用,並且保留和釋放是自動生成的。
從該文檔:
// The following declaration is a synonym for: @property(retain) MyClass *myObject;
@property(strong) MyClass *myObject;
// The following declaration is similar to "@property(assign) MyClass *myObject;"
// except that if the MyClass instance is deallocated,
// the property value is set to nil instead of remaining as a dangling pointer.
@property(weak) MyClass *myObject;
ARC不產生任何保留了你的變量myArray的,所以當你沒有任何的強引用,它的內存被釋放,並給它的任何引用無效,導致你看到的行爲。嘗試改變你的財產從弱到強參考。弱引用對防止引用週期和類似情況很有用,但對於通常情況下,一個對象「擁有」另一個對象並希望它在擁有對象處於活動狀態時保持活動狀態(例如TableViewController使用的NSArray中的數據) ,您需要一個強大的參考,就像您使用非ARC代碼時想要保留該對象一樣。
好問題,但你可以發佈文件,其中你,說,初始化表視圖? – 2012-02-29 19:23:45
在'-tableView:didSelectRowAtIndexPath:'中放置一個斷點。當你點擊它時,輸入'po(NSArray *)[self myArray]',看看你得到了什麼。如果它爲零,則不會正確地爲myArray屬性創建或分配數組。 – Caleb 2012-02-29 19:36:40
爲什麼弱,不強?發佈數組初始化的代碼。 – 2012-02-29 21:08:56