2013-03-05 67 views
-1

我正在研究一個iPhone應用程序,並且我從類型爲_bridge const void *的方法中提取了一個值。 但我需要將此值轉換爲NSString類型。Objective-C從(_bridge const void *)類型轉換爲(NSString *)

我看到一個典型的演員陣容沒有效果。

valueNSString = (NSString *) valueConstVoid 
+0

它實際返回的是哪種類型? – trojanfoe 2013-03-05 15:27:01

+1

需要更多關於原始類型的信息。您將使用其中一種橋接的演員陣容,但void *不能說明字節的含義。 NSData可能是正確的,但NSString或其他的可能也是如此。 – danh 2013-03-05 15:30:30

+0

原始類型是我從屬性返回的一組信息中提取的一系列數字。 但是,由於某些原因,這組數字是_bridge const void *類型。我從來沒有遇到過這樣的數據,甚至不知道_bridge是什麼意思。 問題是我需要提供這些數據給只接受NSString類型的方法,所以我需要將它轉換爲NSString。 – user2136333 2013-03-05 15:35:11

回答

1

也許它可能首先橋接到NSData,然後才轉換成具有適當構造函數的NSString。

所以我們這裏有一個指向void的指針。指向void的指針就是您的物理對象(或字節序列)表示開始的內存位置。我們不知道它是什麼,這就是問題所在。投射只是指定特定類型的指針。換句話說,類型指針允許您知道特定屬性的位置以及實際物理表示的結束位置。讓我們試試這個。在調試器中分配value並在po value中鍵入後,停止調試器。告訴我們您打印的內容。

+0

如何?你能給我一個代碼示例嗎?謝謝! – user2136333 2013-03-05 15:28:37

+0

@ user2136333我需要更多信息來了解如何獲得此值。一旦提供,我馬上給出例子。 – bioffe 2013-03-05 15:35:58

+0

原始類型是我從屬性返回的一組信息中提取的一系列數字。但是,出於某種原因,這組數字是_bridge const void *類型。我從來沒有遇到過這樣的數據,甚至不知道_bridge是什麼意思。問題是我需要將這些數據提供給只接受NSString類型的方法,所以我需要將它轉換爲NSString。 – user2136333 2013-03-05 15:36:57

0

(__bridge const void*)不是一種類型,而是一個演員。所以你的價值可能是const void *。如果您確定它是指向NSString的指針,則可以按如下方式投射它:

const void *value; 
NSString *stringValue = (__bridge NSString *)value; 
+0

問題是,爲什麼它會被聲明爲'void *'?似乎對我來說非常狡猾...... – trojanfoe 2013-03-05 15:32:43

+0

__bridge在這種情況下有什麼意義? – bioffe 2013-03-05 15:32:56

+0

謝謝我試試這個片段! – user2136333 2013-03-05 15:38:00

相關問題