2009-01-06 14 views
6

Trong khi phát triển ứng dụng của tôi, tôi đã nhận ra rằng phần lớn các sự cố ứng dụng của tôi đã phát sinh do quản lý bộ nhớ kém.Cách tốt nhất để theo dõi quản lý bộ nhớ trong khi kiểm tra ứng dụng iPhone của tôi là gì?

Tôi hiểu rằng tôi có thể in hoặc ghi lại số lần lưu giữ thông qua NSLog (@ "giữ lại số lượng là:% d", [myInstance retainCount]);

Nhưng không phải là phương pháp tốt hơn, ít thủ công hơn? Có thể là một đại diện trực quan của các đối tượng và trường hợp của bạn?

đã trả lời. Chúc mừng, Adam & Jason. :-)

Trả lời

6

Sử dụng các công cụ Rò rỉ và Phân bổ đối tượng thông qua XCode.

Run > Start with Performance Tool > ... 
2

Như Adam gợi ý, Dụng cụ là một công cụ rất hữu ích cho những thứ này. Đó là khá dễ sử dụng, nhưng có thể là một chút áp đảo lúc đầu. Tôi khuyên bạn nên sử dụng số Instruments User Guide khi bắt đầu. Nó khá dễ dàng để làm theo và là hữu ích cho đến khi bạn đã sử dụng dụng cụ trong một thời gian. Mặc dù không đọc hướng dẫn, tuy nhiên, Công cụ vẫn dễ dàng hơn và trực quan hơn nhiều so với việc xả rác mã của bạn bằng các cuộc gọi NSLog() và tự mình phân tích đầu ra;)

3

Ngoài các câu trả lời khác, tôi khuyên bạn nên sử dụng clang để làm một phân tích bộ nhớ tĩnh của mã của bạn. Nó sẽ không bắt được mọi lỗi quản lý bộ nhớ, nhưng nó bắt được khá nhiều. Nếu vấn đề chính của bạn dường như đến từ các lỗi quản lý bộ nhớ, clang sẽ đi một chặng đường dài để tìm ra những lỗi đó. Clang là miễn phí, tại http://clang.llvm.org/

0

Tôi cũng tìm thấy thủ thuật NSZombie hữu ích để theo dõi trường hợp của các đối tượng quá phát hành.

Về cơ bản, liên kết mô tả một 'thủ thuật' để các đối tượng được giải phóng được thay thế bởi các đối tượng NSZombie nếu chúng được giải phóng một lần nữa ném ngoại lệ.

Sau đó, bạn có thể sử dụng Instruments để theo dõi trở lại vị trí mà đối tượng được phân bổ.

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