Sto utilizzando il KeyChainItemWrapper dal codice di esempio di Apple per memorizzare password utente per l'autenticazione, ma quando io lo chiamo per impostare la password:Perdita di memoria in iOS KeychainItemWrapper
[keychain setObject:passwordField.text forKey:(id)kSecValueData];
E dribbla le perdite di memoria in tutta la mia camicia . Il problema a quanto pare risale alla linea 274 in KeyChainItemWrapper.m, che è questo:
if (SecItemCopyMatching((CFDictionaryRef)genericPasswordQuery, (CFTypeRef *)&attributes) == noErr)
{
Come potrei risolvere questo problema, e dovrei essere più attenti quando si lavora con il codice di esempio di Apple in futuro?
Nota: potrei pubblicare più codice, ma ho ridotto il problema a questa linea utilizzando Strumenti e il codice di esempio completo è prontamente disponibile per qualsiasi sviluppatore.
Questo era esattamente il problema. Basta aggiungere [rilascio attributi]; alla fine della funzione spine che collegano. Questo bug è stato segnalato ad Apple come suggerito. – Serendipity
Wow: per quanto riguarda il codice di esempio, penso che KeychainItemWrapper sia tra i peggiori là fuori! autoreleases in tutto il mondo, almeno 2 perdite di memoria conosciute, compreso il precedente, e un altro che inizializza portachiavi ItemData ... – npellow
npellow, cosa c'è di sbagliato con autoreleases? Hanno appena rilasciato a un certo punto.Apple li usa frequentemente. In effetti, è come vogliono che noi programmiamo –