Tôi đang sử dụng KeyChainItemWrapper từ mẫu mã của Apple để lưu trữ mật khẩu người dùng để xác thực, nhưng khi tôi gọi nó là để thiết lập mật khẩu:Memory Leak trong iOS KeychainItemWrapper
[keychain setObject:passwordField.text forKey:(id)kSecValueData];
Nó banh rò rỉ bộ nhớ trên khắp áo của tôi . Vấn đề rõ ràng dấu vết trở lại dòng 274 trong KeyChainItemWrapper.m, mà là thế này:
if (SecItemCopyMatching((CFDictionaryRef)genericPasswordQuery, (CFTypeRef *)&attributes) == noErr)
{
Làm thế nào tôi có thể khắc phục điều này, và tôi nên cẩn thận hơn khi làm việc với Apple mẫu mã trong tương lai?
Lưu ý: Tôi có thể đăng thêm mã, nhưng tôi đã thu hẹp sự cố xuống dòng này bằng cách sử dụng Công cụ và mã mẫu đầy đủ sẵn có cho bất kỳ nhà phát triển nào.
Đó chính xác là nơi xảy ra sự cố. Chỉ cần thêm [phát hành thuộc tính]; đến cuối của các chức năng cắm liên kết đó. Lỗi này đã được báo cáo cho Apple như bạn đã đề xuất. – Serendipity
Wow - theo như mã mẫu đi, tôi nghĩ KeychainItemWrapper là một trong những điều tồi tệ nhất hiện có! autoreleases ở khắp mọi nơi, ít nhất 2 rò rỉ bộ nhớ đã biết, bao gồm cả ở trên, và một cái khác khởi tạo keychainItemData ... – npellow
npellow, có gì sai với autoreleases? Họ chỉ phát hành tại một số điểm.Apple sử dụng chúng thường xuyên. Thực ra, cách họ muốn chúng ta lập trình –