2012-04-18 24 views
10

Tôi đang học lập trình iOS.Khi nào tôi sử dụng CFRelease?

tôi đã viết mã liên kết địa chỉ.

có quá nhiều phương pháp. như

Tôi đang chia một nhóm.

đây là nhóm1

ABAddressBookCreate(); 
ABRecordCopyCompositeName(argument); 
ABRecordCopyValue(argument1, argument2); 
ABRecordCopyValue(argument1, argument2); 
ABMultiValueCopyLabelAtIndex(argument1, argument2); 
ABMultiValueCopyValueAtIndex(argument1, argument2); 

và một số khác là ngay tại đây, nhóm2

CFArrayGetCount(argument); 
CFArrayGetValueAtIndex(argument1, argument2); 
ABMultiValueGetCount(argument); 

tôi biết có rất nhiều phương pháp khác.

nhưng tôi tự hỏi khi nào tôi sử dụng phương pháp CFRelease.

tôi nghĩ rằng tất cả các phương pháp của nhóm2 không làm CFRelease

vì có chứa từ "Nhận", không được phân bổ.

và tôi nghĩ rằng tất cả phương pháp của nhóm1 phải sử dụng CFRelease

vì có một "bản sao" chuỗi.

tôi có một cuốn sách.

nhưng đã sử dụng CFRelease hai lần.

một là phát hành ABAddressBookCreate()

nhau là ABAddressBookCopyPeopleWithName.

tất cả những thứ khác không sử dụng CFRelease.

vì vậy tôi tự hỏi khi nào tôi sử dụng CFRelease.

hãy cho tôi biết khi nào tôi sử dụng CFRelease.

Trả lời

9

Nếu tên hàm chứa "Copy" hoặc "Create", sau đó bạn sở hữu đối tượng, vì vậy bạn phải giải phóng nó khi bạn hoàn thành công việc của bạn với nó. Điều này được gọi là "Quy tắc Tạo". Để biết thêm thông tin về quản lý bộ nhớ cho Core Foundation, bạn có thể tham khảo Memory Management Programming Guide for Core Foundation

+0

Xin chào, tôi có cùng một vấn đề. Tôi có thể phát hành một số đối tượng Core Foundation một cách sai lầm. tôi muốn hỏi làm thế nào tôi có thể gỡ lỗi số lượng giữ lại cho mỗi đối tượng và biết chắc chắn rằng tôi có thể phát hành nó. – Sosily

+1

Chạy trình phân tích tĩnh và kiểm tra mọi đối tượng được sao chép, tạo hoặc giữ lại nếu nó được phát hành đúng cách. – graver

+0

Cảm ơn người đàn ông! nó ổn rồi! – Sosily

3

Khi nào bạn tạo ra một đối tượng Nền tảng cốt lõi hoặc trở thành chủ sở hữu của nó, bạn sẽ gọi CFRelease.

Nhìn vào tài liệu CFMemory management

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