2010-04-14 13 views

Trả lời

25

Như @Ben S cho biết, đó là phương pháp retainCount. Tuy nhiên, bạn đang đặt câu hỏi sai, bởi vì:

Important: Thường không có lý do gì để yêu cầu một cách rõ ràng đối tượng đếm được của nó (xem retainCount). Kết quả thường gây nhầm lẫn, vì bạn có thể không biết các đối tượng khung đã giữ lại một đối tượng mà bạn quan tâm. Trong các vấn đề quản lý bộ nhớ gỡ lỗi, bạn chỉ nên quan tâm đến việc đảm bảo rằng mã của bạn tuân thủ các quy tắc quyền sở hữu.

Vì vậy, đây là câu hỏi thực sự: tại sao bạn cần biết?

+0

Một nơi nào đó trong mã ObjectiveC của tôi, bản phát hành đã được gọi trên một đối tượng đã được phát hành. Đối với một số lý do gdb sẽ không phá vỡ tại vị trí cụ thể nơi xảy ra vi phạm truy cập bộ nhớ. Tôi có một đoán tốt nơi mà vấn đề cư trú nhưng muốn xác minh giả định của tôi bằng cách in refcount của đối tượng nghi ngờ. – zer0stimulus

+9

Đặt điểm ngắt trên phương thức dealloc. Ngoài ra, hãy kiểm tra liên kết này: http://www.cocoadev.com/index.pl?NSZombieEnabled – JeremyP

+5

Tốt hơn, hãy sử dụng mẫu Zombies của Instruments. –

23

retainCount

Nhưng bạn nên xem xét sử dụng CFGetRetainCount thay

+1

Phương pháp này không được khuyến khích sử dụng và thậm chí không được đảm bảo trả lại số chính xác. – Eonil

3

sử dụng chức năng CFGetRetainCount

Ví dụ:

print(CFGetRetainCount(object)) 

Read more here.

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