如果我聲明一個NSArray
與alloc
& retain
在單句然後我應該釋放NSArray
對象兩次(即[arrayObject release]
2次)?NSArray的釋放
2
A
回答
0
不,您必須爲每個alloc釋放對象並保留每個對象。如果你
NSArray* arrayObject;
arrayObject = [[NSArray alloc] init];
arrayObject = [[NSArray alloc] init];
...
那麼它只是錯誤代碼(你不能ALLOC對象1倍以上反正。)
0
。後一項任務將覆蓋原來的一個,這會導致泄漏。既可以使用2個對象,並釋放它們中的每一次:
NSArray* arrayObject1, arrayObject2;
arrayObject1 = [[NSArray alloc] init];
arrayObject2 = [[NSArray alloc] init];
...
[arrayObject1 release];
[arrayObject2 release];
或另一個初始化之前釋放該對象。
NSArray* arrayObject;
arrayObject = [[NSArray alloc] init];
...
[arrayObject release];
arrayObject = [[NSArray alloc] init];
...
[arrayObject release];
7
如果要創建一個NSArray
與alloc
並在同一線路retain
那麼你可能做錯了什麼。
對象編號爲alloc
,保留計數爲+1,因此無需再調用retain
。
直接回答你的問題;是的,你不得不release
它兩次。一次因爲你創建了這個對象,一次因爲你編輯了它。但是我會質疑爲什麼你需要首先保留一段時間。
2
您不需要保留它。當你分配/ init時,你已經保留了 - 或者擁有了 - 一個對象的所有權。重溫Memory Management Programming Guide for Cocoa。
相關問題
- 1. NSArray不需要的釋放
- 2. 返回NSArray並釋放它
- 3. 爲什麼我的NSArray被釋放?
- 4. 釋放靜態分配的nsarray
- 5. 內存釋放問題 - UIImages的NSArray
- 6. 在Objective-C中訂購和釋放NSArray
- 7. NSArray不在ARC中釋放Objective-C
- 8. 註釋@ [目的]爲NSArray的
- 9. 在目標C正確地解析的NSString後釋放的NSArray
- 10. NSArray或NSMutableArray的removeAllObjects方法是否釋放內存?
- 11. 我是否需要釋放由sortedArrayUsingDescriptors返回的NSArray?
- 12. NSArray:釋放它的對象,但保留一個指針
- 13. 我應該釋放從NSArray中檢索到的對象嗎?
- 14. 在ARC下,我如何釋放NSArray中的元素?
- 15. 把NSData放入NSArray
- 16. 把NSArray放入TableView
- 17. 循環播放NSArray
- 18. 當釋放NSArray時將對象設置爲零
- 19. Is - [NSArray lastObject]記錄爲返回一個自動釋放對象?
- 20. 閱讀過MKMapViews的註釋中的NSArray
- 21. 自動釋放與釋放
- 22. 釋放或自動釋放的對象
- 23. 釋放後釋放的自由堆塊
- 24. 把NSArray的隨機對象放到隨機UIButtons標題的NSArray
- 25. 在哪裏釋放NSArray在同一類的不同方法中使用
- 26. 爲什麼我可以將消息發送到NSArray的釋放實例?
- 27. 內存泄漏:在iPhone應用程序中釋放NSArray的問題
- 28. 的UITableViewController釋放
- 29. 的shared_ptr釋放
- 30. NSInteger的釋放
這聽起來更像是一個比沒有。 –
@Peter:我不好,我在同一行*上用alloc和init讀*。我明天要刪除我的答案。 –