suchen

Heim  >  Fragen und Antworten  >  Hauptteil

ios – Speicherverwaltung: Problem mit der manuellen Veröffentlichung von CFStringRef

Vor kurzem habe ich mir Quellcode von Drittanbietern angesehen, der einige Datentypen im Core Foundation-Framework betraf, und dabei auf einige Speicherverwaltungsabstürze gestoßen. Ich hoffe, hier Hilfe vom Master zu erhalten.

Frage:

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

Solange es läuft, kommt es zu folgendem Absturz

Aber ich habe den Code unten ausprobiert, einen CFStringRef erstellt und ihn dann manuell freigegeben, es war kein Problem

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

Eigentlich bin ich ziemlich verwirrt über die Methode zum Erstellen von Arrays, die ich im Internet sehe. Ich habe im Internet nach der Verwendung des Core Foundation-Frameworks gesucht, aber es gibt immer noch relativ wenige und ich habe keine Ahnung, wie ich anfangen soll.

Ich warte online und hoffe auf eine effektive Antwort, danke~

phpcn_u1582phpcn_u15822723 Tage vor826

Antworte allen(1)Ich werde antworten

  • PHP中文网

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

    keys 是指针变量 存在栈里 不用手动释放,
    keys[0] keys[1] 才是 CFStr 需要手动释放

    Antwort
    0
  • StornierenAntwort