最近在看第三方的源碼,涉及到了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框架的用法還是比較少的,完全無從下手。
線上等,希望能得到有效地解答,謝謝啦~
keys 是指標變數 存在堆疊裡 不用手動釋放,
keys[0] keys[1] 才是 CFStr 需要手動釋放