Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Làm cách nào để sử dụng Trình gỡ lỗi đồ thị bộ nhớ để xác định các chu kỳ giữ lại trong các ứng dụng MVVMCROSS


Làm cách nào để sử dụng Trình gỡ lỗi đồ thị bộ nhớ để xác định các chu kỳ giữ lại trong các ứng dụng MVVMCROSS


Sử dụng trình gỡ lỗi đồ thị bộ nhớ trong XCODE là một cách hiệu quả để xác định các chu kỳ giữ lại trong các ứng dụng MVVMCROSS. Đây là hướng dẫn từng bước về cách thực hiện:

Giới thiệu về trình gỡ lỗi đồ thị bộ nhớ

Trình gỡ lỗi biểu đồ bộ nhớ là một công cụ mạnh mẽ trong XCode giúp các nhà phát triển xác định rò rỉ bộ nhớ và giữ lại các chu kỳ bằng cách trực quan hóa các mối quan hệ đối tượng trong bộ nhớ. Nó cung cấp một ảnh chụp nhanh về trạng thái bộ nhớ hiện tại, hiển thị các đối tượng nào được giữ lại và cách chúng được tham chiếu.

Các bước để xác định các chu kỳ giữ lại

1. Chạy ứng dụng của bạn: Bắt đầu bằng cách chạy ứng dụng MVVMcross của bạn trong XCODE. Đảm bảo rằng bạn đang kiểm tra phần cụ thể của ứng dụng nơi bạn nghi ngờ một chu kỳ giữ lại có thể xảy ra.

2. Mở Trình gỡ lỗi đồ thị bộ nhớ: Khi ứng dụng của bạn đang chạy, hãy mở Trình gỡ lỗi biểu đồ bộ nhớ bằng cách nhấp vào nút ba nút nằm giữa trình gỡ lỗi trực quan và các nút mô phỏng vị trí trong thanh công cụ của Xcode. Điều này sẽ ghi lại một ảnh chụp nhanh bộ nhớ về trạng thái hiện tại của ứng dụng của bạn.

3. Phân tích ảnh chụp nhanh bộ nhớ: Trong bảng điều khiển bên trái của trình gỡ lỗi biểu đồ bộ nhớ, bạn sẽ thấy một danh sách các đối tượng hiện có trong bộ nhớ, cùng với số lượng phiên bản của mỗi lớp. Tìm kiếm các đối tượng không nên ở đó hoặc có số lượng trường hợp cao bất ngờ.

4. Xác định các chu kỳ giữ lại: Chọn một đối tượng từ bảng điều khiển bên trái để xem biểu đồ tham chiếu của nó. Biểu đồ sẽ hiển thị các tài liệu tham khảo mạnh mẽ như các dòng in đậm và các tài liệu tham khảo chưa biết (có thể yếu hoặc mạnh) như các đường màu xám nhạt. Một chu kỳ giữ lại được biểu thị bằng một vòng lặp trong biểu đồ nơi các đối tượng tham chiếu lẫn nhau theo cách ngăn chúng khỏi bị giải quyết.

5. Điều hướng biểu đồ đối tượng: Để theo dõi nguồn của chu kỳ lưu giữ, bạn có thể cần điều hướng qua nhiều biểu đồ đối tượng. Bắt đầu với đối tượng bị rò rỉ và theo dõi các tài liệu tham khảo ngược để tìm đối tượng cha đang giữ lại nó.

6. Kiểm tra chi tiết đối tượng: Khi bạn nhấp vào một nút trong biểu đồ, bảng kiểm tra sẽ cung cấp thông tin chi tiết về đối tượng, bao gồm các thuộc tính và mối quan hệ của nó. Điều này có thể giúp bạn hiểu tại sao một đối tượng đang được giữ lại.

7. Lặp lại các luồng lõi: Để xác nhận chu kỳ giữ lại, hãy lặp lại luồng hoặc tính năng lõi trong ứng dụng của bạn nhiều lần, chụp ảnh chụp nhớ sau mỗi lần lặp. Nếu số lượng phiên bản của một đối tượng cụ thể tăng theo thời gian, nó có thể chỉ ra một chu kỳ giữ lại.

8. Khắc phục chu kỳ lưu giữ: Một khi bạn đã xác định được nguồn của chu kỳ lưu giữ, bạn có thể sửa nó bằng cách thay đổi các tham chiếu mạnh thành các tài liệu tham khảo yếu hoặc chưa được xác định khi thích hợp. Ví dụ, trong việc đóng cửa, sử dụng `[bản thân yếu]` để tránh bắt `tự 'mạnh mẽ.

Kịch bản chu kỳ lưu giữ phổ biến trong MVVMCROSS

Trong các ứng dụng MVVMcross, hãy giữ lại các chu kỳ thường xảy ra do các tham chiếu mạnh mẽ giữa các mô hình chế độ xem và chế độ xem hoặc do đóng cửa các mô hình xem hoặc chế độ xem mạnh mẽ. Chẳng hạn, nếu mô hình chế độ xem giữ một tham chiếu mạnh mẽ đến chế độ xem và chế độ xem cũng giữ một tham chiếu mạnh mẽ trở lại mô hình chế độ xem, thì cũng không thể được giải quyết.

Để ngăn chặn các chu kỳ như vậy, hãy đảm bảo rằng các mô hình chế độ xem của bạn được làm sạch đúng khi các chế độ xem bị loại bỏ. Sử dụng các phương thức vòng đời được cung cấp bởi mvvmcross, chẳng hạn như 'biến mất () `, để phát hành tài nguyên và phá vỡ mọi tài liệu tham khảo không cần thiết.

Bằng cách làm theo các bước này và hiểu cách các mối quan hệ đối tượng được hiển thị trong Trình gỡ lỗi biểu đồ bộ nhớ, bạn có thể xác định và sửa chữa các chu kỳ giữ lại một cách hiệu quả trong các ứng dụng MVVMcross của mình.

Trích dẫn:
.
.
.
[4] https://forums.developer.apple.com/forums/thread/112268
[5] https://www.mvvmcross.com/mvvmcross-5-release/
.
[7] https://moldstud.com/articles/p-swift-memory-management-tips-for-retain-cycle-issues
[8] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
.