我是新來的集合編程,所以我面臨這個問題。任何幫助將被感謝...NSArray不需要的釋放
我在一個類初始化一個NSArray實例初始化(我已經在頭文件中定義爲該類的屬性,所以ia必須可以訪問它在該類實現的任何地方),並分配一些對象與它 +(NSArray*) arrayWithObjects: ;
。 init方法中的每一件事情都很好,但是,...
當我想在更新方法應用程序崩潰時使用該數組時,因爲該數組DEALLOCATED。
爲什麼數組被解除分配?我如何防止它?
謝謝。
我是新來的集合編程,所以我面臨這個問題。任何幫助將被感謝...NSArray不需要的釋放
我在一個類初始化一個NSArray實例初始化(我已經在頭文件中定義爲該類的屬性,所以ia必須可以訪問它在該類實現的任何地方),並分配一些對象與它 +(NSArray*) arrayWithObjects: ;
。 init方法中的每一件事情都很好,但是,...
當我想在更新方法應用程序崩潰時使用該數組時,因爲該數組DEALLOCATED。
爲什麼數組被解除分配?我如何防止它?
謝謝。
如果要初始化數組這樣,
objects = [NSArray arrayWithObjects: buttonOne, buttonTwo,
textField, nil];
它的傳統方法,它只是一個時間的對象訪問後自動釋放對象。相反,你可以retain
的對象,或者您可以分配,如果你沒有使用ARC,那麼你應該用initWithObjects初始化它像
objects = [NSArray alloc] initWithObjects: buttonOne, buttonTwo,
textField, nil];
假定無弧env。否則這可能不是解決方案 –
@ Daij-Djan使用'alloc'和'init'本身並不假定非ARC。 – 2012-12-01 20:59:06
@ H2CO3對,編輯我的評論 –
您應該用alloc
NSArray並使用-initWithObjects
方法代替。
NSArray* tempArray = [[NSArray alloc] initWithObjects:(id), ..., nil]
假設無弧env。否則這可能不是一個解決方案 –
初始化,然後保留。
如果您使用ARC,可能它只是一個弱引用。當您聲明屬性時,使其成爲一個強有力的參考。
您使用ARC嗎? – 2012-12-01 20:35:47
你的財產「強大」? – Mark
謝謝菲拉斯......它工作。 – Ahmadhp