我想用[myarray removeallobjects]清空一個NSMutableArray;但我得到錯誤exc_bad_access。這是清空數組的正確方法嗎?我試圖將它設置爲零,但它也不工作。 其實我正在做的是用數據填充數組,並且用戶可以選擇「刷新」數據,並且我想在輸入刷新的數據之前清空數組。 我不能發佈任何代碼,因爲太大了。如何正確地清空一個NSMutableArray
回答
-[NSMutableArray removeAllObjects]
是排空NSMutableArray
的正確方法。你很有可能會崩潰,因爲你仍然在用戶界面中使用你刪除的對象。
或者添加到數組後,對象被過度釋放。 –
由於您的數組在內存中不再存在,因此發生崩潰。
我敢打賭,那是因爲你忘了把它保留下來(或者它也即將發佈)您alloc
+ init
後
你可能使用[NSMutableArray array]
或arrayWithObjects:
或其中的一些變種,或者叫autorelease
創造了它,而如果它是一個實例變量,您應該保留它,直到objet被解除分配。
請注意,memory mgmt是iOS開發的關鍵部分。一定要在進一步瞭解之前完美地瞭解它(比如它變得自然,你會毫不猶豫地保留什麼時候發佈),一旦你正確使用它,它會避免你很多麻煩。
@property(nonatomic,retain)NSMutableArray * checkinArray;在我的.h。 checkinArray = [[NSMutableArray alloc] init];在viewdidload和[checkinArray release]中;在dealloc中(最後一個不是問題,因爲即使我從dealloc中刪除了這一行也會崩潰)。你看到有什麼問題嗎? – BlackM
我認爲這個問題是在這個片段中,你已經在評論中提供的代碼,
[checkinArray addObject:checkinsA];
[checkinsA.taggedID release];
[checkinsA.taggedName release];
[checkinsA release];
taggedID
和taggedName
是checkinsA
對象的屬性。他們應該只在dealloc
方法中發佈。該數組不保留對象樹。它僅保留根對象。所以這裏不應該有一個版本。所以敲出中間的兩條線,並使其成爲
[checkinArray addObject:checkinsA];
[checkinsA release];
checkinsA.taggedID和taggedName是checkinsA中的NSMutableArrays。 checkinsA也在for循環中。 – BlackM
for(NSDictionary * user in user){ Checkin * checkinsA = [[Checkin alloc] init]; checkinsA.taggedName = [[NSMutableArray alloc] init]; checkinsA.taggedID = [[NSMutableArray alloc] init]; ...... [checkinArray addObject:checkinsA]; [checkinsA.taggedID release]; [checkinsA.taggedName release]; [checkinsA release]; – BlackM
- 1. 如何正確複製一個NSMutableArray?
- 2. 如何正確地將NSArray/NSMutableArray從一個UIViewController傳遞到另一個
- 3. 如何正確地釋放一個NSMutableArray與具有一個NSMutableArray成員與NSNumber對象內的對象?
- 4. 如何正確地清理表格
- 5. 如何正確地清理數組? C++
- 6. 不清楚如何正確地從另一個UIViewController中移除一個UIViewController
- 7. 如何正確地從一個ULONGLONG
- 8. 如何正確複製多維NSMutableArray?
- 9. NSMutableArray正在影響另一個NSMutableArray?
- 10. Objective C - 用NSMutableArray清空並重新加載UITableViewController的正確方法
- 11. 如何正確清除ImageView?
- 12. 如何正確地從另一個viewController刪除一個引腳
- 13. 如何讓一個類正確地實現一個接口?
- 14. .htaccess正確地阻止一個目錄,另一個不正確。
- 15. 開啓tableView編輯後,NSMutableArray清空
- 16. 如何清空一個集巨蟒
- 17. 如何清空一個數組
- 18. 如何更換一個NSMutableArray
- 19. 我如何從一個NSMutableArray
- 20. Pygame沒有正確清空列表
- 21. 如何正確地設計一個「基地」角/離子類
- 22. 如何addShape()一個谷歌地圖jQueryUI的地圖上正確
- 23. 如何啓動一個NSRunLoop,並確保它有一個NSAutoreleasePool被清空?
- 24. 如何將一個NSMutablearray複製到另一個NSMutablearray?
- 25. 如何一個NSMutableArray存儲到另一個的NSMutableArray在Objective-C
- 26. 如何使一個CFArrayRef到一個NSMutableArray
- 27. 清除NSMutableArray
- 28. 如何明確清空頻道?
- 29. 如何清空這個div?
- 30. 如何正確地清理休眠會話
您可以添加將對象添加到數組的部分嗎? –
[checkinArray addObject:checkinsA]; [checkinsA.taggedID release]; [checkinsA.taggedName release]; [checkinsA release]; 其中checkinsA是一個自定義對象。此命令也處於循環狀態。 – BlackM