ios - Gestion de la mémoire : problème de version manuelle de CFStringRef
phpcn_u1582
phpcn_u1582 2017-06-10 09:48:13
0
1
819

Récemment, j'ai examiné du code source tiers, qui impliquait certains types de données dans le framework Core Foundation, et j'ai rencontré des plantages de gestion de la mémoire. J'ai oublié beaucoup de choses sur la voix C. J'espère obtenir des conseils du maître ici.

Question :

//在网上例子上看到的这种方式创建的一个CFString的数组
CFStringRef keys[2];
keys[0] = CFSTR("key1");
keys[1] = CFSTR("key2");
//所以Core Foundation框架中的对象都不支持ARC,需要手动释放
CFRelease(keys);

Tant qu'il fonctionne, le crash suivant se produira

Mais j'ai essayé le code ci-dessous, créé un CFStringRef puis l'ai publié manuellement, ce n'était pas un problème

CFStringRef aSTR = CFSTR("A STRING");
CFRelease(aSTR);

En fait, je suis assez confus quant à la méthode de création de tableaux que je vois sur Internet. J'ai vérifié sur Internet l'utilisation du framework Core Foundation, mais il y en a encore relativement peu, et je ne sais pas par où commencer.

En attente en ligne, en espérant obtenir une réponse efficace, merci~

phpcn_u1582
phpcn_u1582

répondre à tous(1)
Ty80

keys est une variable de pointeur et est stockée dans la pile. Elle n'a pas besoin d'être libérée manuellement.
keys[0] key[1] est CFStr et doit être libérée manuellement

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal