Iam新使用Core Foundations。我想用字典來存儲一些關鍵值對。該值必須是一個指向結構體的指針。該指針指向動態分配的緩衝區。使用CFDictionarySetValue()存儲結構爲值()
CFMutableDictionaryRef init_hash_table() {
return CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
}
這是用來創建字典和返回值存儲爲全局變量。
CFNumberRef
create_hash_key(int sd) {
return CFNumberCreate(NULL, kCFNumberIntType, &sd);
}
int
add_hash_entry(CFMutableDictionaryRef dict, int sd, void *pkt) {
CFNumberRef key = create_hash_key(sd);
CFDictionarySetValue(dict, key, pkt);
return 0;
}
當我執行此代碼時,我得到段錯誤。我看到pkt有一個有效的地址,並且鍵似乎被創建。有誰知道如何分配一個指向值部分的指針?
編程接收到的信號EXC_BAD_ACCESS,無法訪問存儲器。 原因:KERN_INVALID_ADDRESS地址:0x0000000000000011 0x00007fff8c9f339f在objc_msgSend_fixup()
任何想法?
你有特殊原因不能使用,而不是核心基礎可可?這可以節省一些頭痛。 – Matthias 2013-03-07 08:00:24
沒有這樣的東西,我剛開始使用CF,我的使用非常有限。這是唯一的用例。 – user2085689 2013-03-07 21:55:29
有時需要CF。引用Apple:**重要:**使用CFDictionaryRef數據類型而非NSDictionary對象來跟蹤觸摸,因爲NSDictionary會複製其鍵。 UITouch類不採用對象複製所需的NSCopying協議。 – 2014-04-23 07:03:44