2013-11-24 21 views

Trả lời

5

Vụ rò rỉ là một hậu duệ của main.

Sẽ rất khôn ngoan khi xem video WWDC về cách sử dụng rò rỉ wrt cụ, bạn có thể nhận được nhiều thông tin hơn về những gì bạn đã hiển thị.

Rò rỉ hiển thị nơi bộ nhớ bị rò rỉ được cấp phát, rò rỉ là do bản phát hành bị thiếu để không thể hiển thị, nó bị thiếu.

Một nguyên nhân phổ biến khi sử dụng ARC là chu kỳ lưu giữ. Có lẽ một tài sản đại biểu là mạnh thay vì hoặc yếu gây ra một chu kỳ giữ lại. Ví dụ: Object-A instantiates Object-B. Object-B khởi tạo Object-C với một thuộc tính mạnh. Object-C tạo ra một delegate thuộc tính mạnh trỏ đến Object-B. Object-A giải phóng Object-B nhưng Object-B không thể giải quyết vì Object-C vẫn có một con trỏ mạnh. Object-C không thể deallocate vì Object-B vẫn có một con trỏ mạnh đến nó. Tại thời điểm này, mỗi người giữ cho nhau từ deallocating - một chu kỳ giữ lại. Câu trả lời là Object-C nên có một điểm yếu đối với Object-B.

os nhiệm vụ của bạn để xem chi tiết và tìm đối tượng đang bị rò rỉ và sau đó tìm hiểu lý do tại sao nó không được phát hành. Điều này là khá nhiều lần.

+0

Tôi thấy cảm ơn bạn, đó là những gì bị bệnh. Liên kết sẽ có hiệu ứng gì trên ứng dụng? Tôi đã thử nghiệm các ứng dụng trên cả sim và thiết bị trong một vài tuần và không có vấn đề gì cả. Có phải là một vụ đánh bom thời gian chờ đợi xảy ra? – DevC

+2

Câu hỏi khác nhau. Một hoặc một vài rò rỉ nhỏ có thể chấp nhận được nếu chúng không phát triển với mức sử dụng. Xin lưu ý rằng ứng dụng của bạn có thể vẫn còn hoạt động trong một thời gian dài mà không cần khởi động lại do vẫn còn hoạt động trong nền. Nhưng tốt nhất là loại bỏ tất cả các rò rỉ, chúng là tất cả các lỗi lập trình. Cuối cùng, chạy máy phân tích và sửa tất cả các cảnh báo. – zaph

+0

Cảm ơn bạn đã xóa thông tin đó, đó là lần duy nhất tôi bị rò rỉ, ngay khi bắt đầu ứng dụng nhưng kết thúc sau một vài giây mà không có bất kỳ tương tác người dùng nào. – DevC

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