我有arg1這是一個IMessage。消息對象定義爲:什麼是__CFString?
struct IMessage {
...
struct CFString _field2;
...
};
和CFString字符串被定義爲:
struct CFString {
void **_vptr$CFObject;
struct __CFString *mCFRef;
_Bool mIsMutable;
};
和__CFString被定義爲:
struct __CFString;
我的目標是獲得某種形式的字符串是它來自arg1的NSString或CFStringRef,那我該怎麼做呢? 謝謝。
這裏是我的錯誤,當我嘗試NSLog的mCFRef:
Thread 0 crashed:
# 1 0x97b41edb in _objc_msgSend + 0x0000001B (libobjc.A.dylib + 0x00005edb)
# 2 0x9610b5f2 in __CFStringAppendFormatAndArgumentsAux + 0x00000C42 (CoreFoundation + 0x0002c5f2)
# 3 0x9610a979 in __CFStringCreateWithFormatAndArgumentsAux + 0x00000069 (CoreFoundation + 0x0002b979)
# 4 0x961b3a3e in __CFLogvEx + 0x0000008E (CoreFoundation + 0x000d4a3e)
# 5 0x9415387c in _NSLogv + 0x0000008F (Foundation + 0x0009487c)
# 6 0x941537eb in _NSLog + 0x0000001B (Foundation + 0x000947eb)
您應該在該結構中更改「mCFRef」的聲明。它應該是'CFStringRef mCFRef;'。像所有其他'BlahBlahRef'類型一樣,'CFStringRef'類型的存在是爲了強調指針是不透明的,而不是指向一個對你開放的結構的指針。 – 2011-03-23 11:28:23
我這樣做,仍然得到EXC BAD ACCESS錯誤,請檢查原始問題的錯誤。謝謝! – user635064 2011-03-23 17:00:52
也許底層的CFStringRef是void指針?我嘗試解除引用無效點並將其轉換爲CFStringRef,但仍然沒有運氣... – user635064 2011-03-23 17:17:34