1
StringArray NativeSearch::search(const String &filenameglob) {
CFStringRef queryString = jcf_getMDQueryString(filenameglob);
MDQueryRef query;
query = MDQueryCreate(kCFAllocatorDefault, queryString,
nullptr, nullptr);
CFRelease(queryString);
if (query == NULL) return StringArray();
MDQueryExecute(query, kMDQuerySynchronous);
int resultCount = MDQueryGetResultCount(query);
StringArray result;
for (CFIndex i = 0; i < resultCount; ++i) {
const MDItemRef r = (const MDItemRef) MDQueryGetResultAtIndex(query, i);
CFStringRef filename = (CFStringRef) MDItemCopyAttribute(r,
CFSTR("kMDItemFSName"));
DBG("found: " + String::fromCFString(filename));
CFRelease(r);
CFRelease(filename);
}
CFRelease(query); // <<< EXC_BAD_ACCESS
return result;
}
對此問題的任何建議。我期待必須稱爲CFRelease()查詢作爲查詢是使用MDQueryCreate創建的。 Apple文檔表明,這對於Create函數的結果是正確的。使用MDQueryRef調用CFRelease EXC_BAD_ACCESS
但是我得到一個崩潰。否則,代碼按預期工作。
對此有何看法?