Maison  >  Questions et réponses  >  le corps du texte

ios - Gestion de la mémoire : problème de version manuelle de CFStringRef

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_u1582phpcn_u15822658 Il y a quelques jours780

répondre à tous(1)je répondrai

  • PHP中文网

    PHP中文网2017-06-10 09:50:13

    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

    .

    répondre
    0
  • Annulerrépondre