2012-08-24 26 views
15

Gần đây tôi đã chuyển đổi dự án iOS của mình sang ARC. Một trong những bộ điều khiển xem không gọi phương thức dealloc của nó và không được dealloc'ed theo Instruments.Làm thế nào để bạn tìm ra những gì đang giữ lại một đối tượng trong Dụng cụ?

Tôi đã kiểm tra kỹ tất cả các thuộc tính của mình và đặt các thuộc tính phù hợp thành yếu. Tôi cũng đã chắc chắn rằng bất cứ điều gì có bộ điều khiển xem như là một đại biểu có nó unset trên viewWillDisappear nhưng xem vẫn dính xung quanh trong bộ nhớ.

Tôi là người mới ở Dụng cụ: làm cách nào tôi có thể biết nội dung đang giữ lại chế độ xem này?

+0

Đặt thông điệp tường trình trong chế độ xemLàm mờ với loại đối tượng và con trỏ, sau đó khi bạn thấy rằng VC chưa được xem xét nếu thực tế nó có viewWillDisappear. –

Trả lời

27

Vâng, nếu bạn đang thực sự gặp khó khăn và chương trình rất phức tạp (hoặc trừu tượng, trong trường hợp của ARC), bạn có thể đưa ra các khẩu pháo:

  • Mở dự án Xcode của bạn
  • Chọn thực thi (nếu cần)
  • Nhấn cmd+i (Profile)
  • Chọn cụ 'Rò rỉ' tại Le wizard (nếu cần)
  • Press Return để bắt đầu profiling
  • Tập thể dục ứng dụng của bạn
  • Nhấn 'Stop' trong Instruments
  • Xác minh cụ 'Phân bổ' được chọn
  • Bấm và giữ nút Popup tên 'kê'
  • Chọn danh sách các đối tượng mục
  • Xác định vị trí phân bổ bạn quan tâm, trong số các bản ghi trong Danh sách đối tượng
  • Chọn phân bổ/đối tượng đó
  • Nhấp vào 'mũi tên chi tiết' ở bên phải địa chỉ trong ô xem bảng của allo đó cation
  • Bây giờ bạn xem tất cả các sự kiện liên quan đến việc phân bổ (phân bổ, miễn phí, hoạt động tính tham khảo)
  • Nhấn cmd+shift+e cho Extended chi tiết
  • Đi qua những biến cố trong danh sách này, và xác định vị trí sự mất cân bằng mà bạn tìm kiếm.
+1

Mở rộng chi tiết sẽ cho phép bạn xem các ngăn xếp như thế nào bộ nhớ được phân bổ và có thể cung cấp cho bạn một dấu hiệu khá tốt về nơi bạn có thể có một 'malloc' mà không có một' miễn phí' tương ứng. – Gujamin

Các vấn đề liên quan