2011-08-15 74 views
10

我試圖將CFUUIDRef轉換爲NSString *。xcode上未聲明的標識__bridge

之前,我用下面的代碼,工作得很好。

CFStringRef str = CFUUIDCreateString(NULL, _uuid); # _uuid is of type CFUUIDRef 
return (__bridge NSString *) str; 

然而,在Xcode的最近更新(?或其他事情,我沒有注意到)後,上面的代碼給我的錯誤:

使用未聲明的標識符「__bridge」

所以我做錯了什麼?我怎麼能解決它?

===修訂===

完整的代碼:

+ (NSString *)uuidToString:(CFUUIDRef)_uuid { 
    CFStringRef str = CFUUIDCreateString(NULL, _uuid); # _uuid is of type CFUUIDRef 
    return (__bridge NSString *) str; 
} 

UUID是通過產生:

uuid = CFUUIDCreate(NULL); 
+0

您是否打開了ARC? – Wevah

+0

它抱怨ARC不允許轉換......我對xocde非常陌生,不知道如何打開它,也不知道如何檢查它是否實際打開。 – PeterWong

+0

如果要使用ARC,請重新打開ARC,並向我們顯示其抱怨的完整代碼。 –

回答

20

__bridge僅與ARC(自動引用計數)定義啓用。它用於「將對象傳入和傳出ARC控制」。 (Source

要開啓ARC,去到您的構建設置,並設置Objective-C Automatic Reference CountingYes。或者,如果你不想使用ARC,只需刪除__bridge,它應該可以正常工作。

+1

嗨我已經使用了這裏給出的答案:http://stackoverflow.com/questions/9342225/how-to-check-network-provider-name-in-ios-programming/9342559#comment11800200_9342559 但是得到的錯誤。看到我的評論附加到該答案。你能幫我解決嗎? – Mrunal