首頁  >  問答  >  主體

ios - 記憶體管理:CFStringRef 手動釋放的問題

最近在看第三方的源碼,涉及到了Core Foundation框架裡的一些資料類型,遇到了一些記憶體管理的崩潰,C語音的很多東西都忘記了,希望在這裡能得到大神的指導。

問題:

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

只要運行就會出現如下的當機

#但是我試了下邊的程式碼,建立一個CFStringRef,然後手動釋放,是沒問題的

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

其實對於網路上看到的那種創建數組的方式也比較蒙圈,在網上查了關於Core Foundation框架的用法還是比較少的,完全無從下手。

線上等,希望能得到有效地解答,謝謝啦~

phpcn_u1582phpcn_u15822710 天前815

全部回覆(1)我來回復

  • PHP中文网

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

    keys 是指標變數 存在堆疊裡 不用手動釋放,
    keys[0] keys[1] 才是 CFStr 需要手動釋放

    回覆
    0
  • 取消回覆