Ứng dụng của tôi sử dụng một từ điểnTại sao xóa (DictionaryInstance [key]); Thất bại?
protected _categoryToValueDict:Dictionary = new Dictionary();
để ánh xạ một cái gì đó để cái gì khác.
Bây giờ, tại một thời điểm nhất định trong ứng dụng, tôi cần phải xóa một khóa nhất định khỏi Dictionary
.
tôi thực hiện phương pháp đơn giản này:
public function setCategoryNoValue(cat:TAModelCategory):void {
// delete(_categoryToValueDict[ cat ]);
var old:Dictionary = _categoryToValueDict;
_categoryToValueDict = new Dictionary();
for (var key:* in old) {
if (key != cat) {
_categoryToValueDict[ key ] = old[ key ];
}
}
}
Nếu tôi chỉ sử dụng [mô tả của các nhà điều hành delete]
delete(_categoryToValueDict[ cat ]);
ứng dụng riêng của mình không ném sai sót trong chế độ bình thường. Nhưng ngay sau khi tôi serialize cấu trúc dữ liệu bên ngoài của nó sang nguồn bên ngoài [hiện tại SharedObject], ứng dụng không thể hủy nối tiếp sau này.
Nếu tôi sử dụng mã hóa trên tay loại bỏ lặp đi lặp lại hoạt động, hoạt động de-serialize công trình như mong đợi và mô hình xuất hiện trong ứng dụng.
Phương án thay thế phải giống hệt nhau. Phải không?
Vì vậy, câu hỏi của tôi: Sự khác biệt giữa hai lựa chọn thay thế là gì?
PS: Câu hỏi này có thể có liên quan đến my previous one.
CẬP NHẬT-1
Adobe giải thích trên this page:
Để thực hiện các đối tượng được tham chiếu bởi myObject đủ điều kiện để thu gom rác thải, bạn phải loại bỏ tất cả các tham chiếu tới nó. Trong trường hợp này, bạn phải thay đổi giá trị của myObject và xóa khóa myObject từ myMap, như trong đoạn mã sau:
myObject = null;
delete myMap[myObject];
là cho rằng đây là một lỗi đánh máy. Không nên đọc như sau:
delete myMap[myObject];
myObject = null;
Tại sao chuyển con trỏ rỗng vào myMap làm khóa?
+1 cho câu hỏi được giải thích rõ ràng và thực hiện một số nghiên cứu trước khi đăng. – JeffryHouser
Xem lại mã của bạn; nguồn của phương thức "xóa" ở đâu? – JeffryHouser
@ www.Flextras.com xóa là toán tử chứ không phải phương thức. Vì vậy, tôi đã không cung cấp một phương pháp. – SteAp